[每周一更]-(第135期):AI融合本地知识库(RAG),谁才是最强王者!

在这里插入图片描述

文章目录

    • 简单看下DeepSeek满血版配置
    • RAG是什么?
      • **RAG 的核心原理**
      • RAG的局限性
      • **RAG 技术栈**
      • 技术实现
    • **RAG 的应用场景**
    • **RAG vs 传统 LLM**
      • **方法 1:配合 LangChain 加载知识库**
      • **方法 2:使用 Ollama**
      • **方法 3:结合 AnythinkLLM**
      • **总结**

简单看下DeepSeek满血版配置

硬件环境如下:

  • CPU : Intel Xeon Platinum 8480 (112核) = 3w
  • 内存:512G+ (三星64G*16) = 2.3w
  • GPU:8 * A100 (80G) = 15.5w*8 = 124w

软件环境如下:

  • 操作系统:ubuntu 20.04
  • PyTorch:2.6.0
  • CUDA:12.2
  • ollama:最新版本

网络环境如下:

  • 网络带宽 :10Gbps

本地部署的知识库,对于企业的意义最大,对于个人而言,也是一个能力放大器,也可以将个人能力无限放大。

企业是不可能容忍自己的资料上传到网络的。

RAG是什么?

RAG 是 Retrieval-Augmented Generation(检索增强生成)的缩写,是一种结合了信息检索和文本生成技术的AI方法。它在自然语言处理(NLP)领域中广泛应用,特别是在需要从大量数据中提取知识并生成准确、自然回答的场景下。

能将用户提问结合一个个性化的知识库,整合起来生成答案给到用户。

本地知识库可以在企业运营中慢慢磨合,不断精修数据库,让大模型和本企业契合度越来越高。再加上部署多个大模型,形成多模态agent智能体,让用户得到错误答案的概率进一步减小。这将是未来个人和企业的最优方案

RAG 的核心原理

  1. 检索(Retrieval):
    • 在外部知识库(如数据库、文档、向量数据库)中搜索相关信息。
    • 例如,搜索公司内部文档、学术论文、网页内容等。
  2. 增强(Augmented):
    • 将检索到的内容与用户输入 合并,提供上下文。
  3. 生成(Generation):
    • 让 LLM 基于检索到的信息 生成回答,而不是完全依赖内部知识。

这使得 LLM 能处理超出训练数据的最新信息,避免幻觉(hallucination)。

RAG的局限性

  • 检索质量依赖:如果检索器返回无关或错误的上下文,生成结果可能不准确。
  • 计算成本:检索和生成两步过程比纯生成模型更耗资源。
  • 知识库限制:回答质量受限于知识库的覆盖范围和内容的可靠性。

RAG 技术栈

向量数据库(用于存储和检索文档):

  • FAISS(Facebook AI)
  • Pinecone
  • Weaviate
  • ChromaDB

大语言模型(LLM)

  • OpenAI GPT-4 / GPT-3.5
  • DeepSeek
  • Claude
  • LLaMA / Mistral

检索方法

  • 关键字搜索(BM25)
  • 语义搜索(基于向量嵌入)
  • 混合检索(关键词 + 语义)

工具

  • LangChain(用于构建 RAG 管道)
  • LlamaIndex(专注于文档检索)

技术实现

RAG 通常由以下组件构成:

  • 检索器:如 DPR(基于向量相似性)或 BM25(基于关键词)。
  • 生成器:如 BART、T5 或其他预训练语言模型。
  • 知识库:可以是结构化数据(如数据库)或非结构化数据(如文本文件)。

开源实现示例:

  • Hugging Face:提供了 RAG 模型的预训练版本。
  • LangChain:一个流行的框架,支持快速搭建 RAG 应用。

RAG 的应用场景

  • 企业内部问答:让 AI 搜索公司内部文档,回答员工问题。
  • 法律 / 医疗 AI:从专业数据库中检索最新法规或医学知识。
  • 电商推荐 / 价格查询:基于数据库检索商品信息,并生成推荐文案。
  • 代码助手:从 GitHub 或文档中检索代码片段,辅助开发者。

RAG vs 传统 LLM

特点传统 LLMRAG
数据来源训练数据固定实时从外部知识库检索
知识更新不能获取新数据可以实时获取最新信息
准确性可能产生幻觉依赖真实数据,提升准确性
成本需要不断微调无需微调,只需更新知识库

方法 1:配合 LangChain 加载知识库

LM Studio 可以通过 OpenAI API 兼容模式,让 LangChain 连接本地大模型并结合 FAISS 或 ChromaDB 进行知识检索。

步骤:

  1. 在 LM Studio 中运行本地模型
    • 打开 LM Studio
    • 选择模型(如 DeepSeek)并点击 “Launch”
    • 记住 API 地址,例如 http://localhost:1234/v1
  2. 使用 LangChain 结合 FAISS 加载本地文档
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_community.document_loaders import TextLoader
from langchain_community.text_splitter import CharacterTextSplitter
from langchain.chains import RetrievalQA
from langchain_community.llms import ChatOpenAI# 加载本地文档
loader = TextLoader("your_document.txt")
documents = loader.load()# 文本分割
text_splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
texts = text_splitter.split_documents(documents)# 加载嵌入模型
embedding_model = HuggingFaceEmbeddings()# 构建 FAISS 知识库
vectorstore = FAISS.from_documents(texts, embedding_model)# 连接 LM Studio API
llm = ChatOpenAI(openai_api_base="http://localhost:1234/v1", model_name="deepseek")# 结合 RAG 进行问答
retriever = vectorstore.as_retriever()
qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)query = "基因检测的作用是什么?"
answer = qa_chain.run(query)print(answer)

这样就可以让 LM Studio 结合 FAISS 进行知识库问答!


方法 2:使用 Ollama

如果你想要更简便的方式,可以使用 Ollama(支持 DeepSeek)+ LM Studio 进行知识库问答:

  1. 安装 Ollama:

    curl -fsSL https://ollama.com/install.sh | sh
    
  2. 加载模型:

    ollama pull deepseek
    
  3. 在 LM Studio 连接 Ollama 的 API (http://localhost:11434) 并使用 LangChain 处理知识库。


方法 3:结合 AnythinkLLM

如果你需要 LM Studio + GUI 形式的知识库支持,可以考虑 AnythinkLLM,它支持 DeepSeek + FAISS 直接在 UI 里管理知识库。


总结

方式支持知识库适用场景
LM Studio + LangChainFAISS/Chroma需要 Python 编程
Ollama + LangChain简单易用低配置设备
AnythinkLLMGUI 直接管理图形化操作

如果你不想写代码,AnythinkLLM 更合适,如果你希望更灵活,LM Studio + LangChain 更强大

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21885.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go orm GORM

官网:https://gorm.io/ docs:https://gorm.io/docs/ 博客:https://www.tizi365.com/archives/6.html import ("fmt""gorm.io/driver/mysql""gorm.io/gorm" )type Product struct {gorm.ModelCode stringPr…

毕业项目推荐:基于yolov8/yolo11的100种中药材检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

基于Python CNN和词向量的句子相似性度量

毕业设计:基于CNN和词向量的句子相似性度量 注意:因为要计算WMD距离所以需要安装依赖库pyemd 开发环境 Anaconda Pycharm 项目说明 按照老师要求复现论文(论文提出了一个新概念相似元,通过相似元来计算两个句子的相似度‘),同…

CPU安装pytorch(别点进来)

终于! 深度学习环境配置5——windows下的torch-cpu1.2.0环境配置_requirement怎么写torch cu-CSDN博客

Django-Vue 学习-VUE

主组件中有多个Vue组件 是指在Vue.js框架中,主组件是一个父组件,它包含了多个子组件(Vue组件)。这种组件嵌套的方式可以用于构建复杂的前端应用程序,通过拆分功能和视图,使代码更加模块化、可复用和易于维…

MATLAB基础学习相关知识

MATLAB安装参考:抖音-记录美好生活 MATLAB基础知识学习参考:【1小时Matlab速成教程-哔哩哔哩】 https://b23.tv/CnvHtO3 第1部分:变量定义和基本运算 生成矩阵: % 生成矩阵% 直接法% ,表示行 ;表示列 a [1,2,3;4,5,6;7,8,9];%…

TypeScript - 数据类型 - 声明变量

TypeScript 是一种强类型的 JavaScript 超集,它引入了静态类型检查和类型注解。基础类型是 TypeScript 中最基本的类型,用于定义变量的类型。 一、数据类型 常用基本类型:boolean 、number 、string 常用,都是小写 1.布尔类型&…

有序任务规划的局限性

有序任务规划的局限性(Limitation of Ordered-Task Planning) 1. 任务前向分解(TFD)的限制 TFD(Task Forward Decomposition)是一种 基于完全有序方法(Totally Ordered Methods)的任…

MATLAB学习之旅:数据插值与曲线拟合

在MATLAB的奇妙世界里,我们已经走过了一段又一段的学习旅程。从基础的语法和数据处理,到如今,我们即将踏入数据插值与曲线拟合这片充满魅力的领域。这个领域就像是魔法中的艺术创作,能够让我们根据现有的数据点,构建出更加丰富的曲线和曲面,从而更好地理解和描述数据背后…

ASP.NET Core 下载文件

本文使用 ASP .NET Core,适用于 .NET Core 3.1、.NET 5、.NET 6和.NET 8。 另请参阅: 如何在将文件发送到浏览器后自动删除该文件。 如何将文件从浏览器上传到服务器。 如何在 ASP.NET Core 应用程序中从 URL/URI 下载文件。 如果使用.NET Framework&am…

Part 3 第十二章 单元测试 Unit Testing

概述 第十二章围绕单元测试展开,阐述了单元测试的实践与重要性,通过对比其他测试类型,突出其特点,还介绍了单元测试的最佳实践、避免的反模式以及与测试替身相关的内容,为编写高质量单元测试提供指导。 章节概要 1…

SpringCloud-Eureka初步使用

什么是REST是一组用于规范资源在网络中转移的表现形式软件架构设计风格.简单来说就是客户端和服务器之间的一种交互形式 什么是RESTful,满足了REST风格的接口或者程序,RESTful API是其中的接口,spring中提供了RestTemplate这个类,他强制执行了REST的规范,包括使用HTTP协议的状…

Linux 高级篇 日志管理、定制自己的Linux系统、备份与恢复

一、日志管理 (1)基本介绍 日志文件是重要的系统信息文件,记录了如用户登录、系统启动、系统安全、邮件及各种服务等相关重要系统事件在安全方面,日志也至关重要,它能记录系统日常发生的各类事情,可用于检…

SpringMVC 请求参数接收

目录 请求 传递单个参数 基本类型参数传递 未传递参数 ?传递参数类型不匹配 传递多个参数 传递对象 后端参数重命名 传递数组 传递集合 传递JSON数据 JSON是什么 JSON的优点 传递JSON对象 获取URL中的参数 文件上传 在浏览器与程序进行交互时,主要…

深度学习之图像回归(一)

前言 图像回归任务主要是理解一个最简单的深度学习相关项目的结构,整体的思路,数据集的处理,模型的训练过程和优化处理。 因为深度学习的项目思路是差不多的,主要的区别是对于数据集的处理阶段,之后模型训练有一些小…

23. AI-大语言模型-DeepSeek简介

文章目录 前言一、DeepSeek是什么1. 简介2. 产品版本1. 类型2. 版本3. 参数规模与模型能力 3. 特征4. 三种访问方式1. 网页端和APP2. DeepSeek API 二、DeepSeek可以做什么1. 应用场景2. 文本生成1. 文本创作2. 摘要与改写3. 结构化生成 3. 自然语言理解与分析1. 语义分析2. 文…

京东cfe滑块 分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 headers {"accept&qu…

什么是事务?并发事务引发的问题?什么是MVCC?

文章目录 什么是事务?并发事务引发的问题?什么是MVCC?1.事务的四大特性2.并发事务下产生的问题:脏读、不可重复读、幻读3.如何应对并发事务引发的问题?4.什么是MVCC?5.可见性规则?参考资料 什么…

火语言RPA--Excel插入空行

【组件功能】:在Excel内指定的位置插入空行 配置预览 配置说明 在第n行之前 支持T或# 填写添加插入第n行之前行号。 插入n行 支持T或# 插入多少行。 Sheet页名称 支持T或# Excel表格工作簿名称。 示例 Excel插入空行 描述 在第3行之后插入3行。 配置 输…

【算法基础】--前缀和

前缀和 一、一维前缀和示例模板[寻找数组的中心下标 ](https://leetcode.cn/problems/tvdfij/description/)除自身以外的数组乘积和可被k整除的子数组 一、一维前缀和 前缀和就是快速求出数组某一个连续区间内所有元素的和。 示例模板 已知一个数组arr,求前缀和 …