文章目录
- 简单看下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 的核心原理
- 检索(Retrieval):
- 在外部知识库(如数据库、文档、向量数据库)中搜索相关信息。
- 例如,搜索公司内部文档、学术论文、网页内容等。
- 增强(Augmented):
- 将检索到的内容与用户输入 合并,提供上下文。
- 生成(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
特点 | 传统 LLM | RAG |
---|---|---|
数据来源 | 训练数据固定 | 实时从外部知识库检索 |
知识更新 | 不能获取新数据 | 可以实时获取最新信息 |
准确性 | 可能产生幻觉 | 依赖真实数据,提升准确性 |
成本 | 需要不断微调 | 无需微调,只需更新知识库 |
方法 1:配合 LangChain 加载知识库
LM Studio 可以通过 OpenAI API 兼容模式,让 LangChain 连接本地大模型并结合 FAISS 或 ChromaDB 进行知识检索。
步骤:
- 在 LM Studio 中运行本地模型
- 打开 LM Studio
- 选择模型(如 DeepSeek)并点击 “Launch”
- 记住 API 地址,例如
http://localhost:1234/v1
- 使用 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 进行知识库问答:
-
安装 Ollama:
curl -fsSL https://ollama.com/install.sh | sh
-
加载模型:
ollama pull deepseek
-
在 LM Studio 连接 Ollama 的 API (
http://localhost:11434
) 并使用 LangChain 处理知识库。
方法 3:结合 AnythinkLLM
如果你需要 LM Studio + GUI 形式的知识库支持,可以考虑 AnythinkLLM,它支持 DeepSeek + FAISS 直接在 UI 里管理知识库。
总结
方式 | 支持知识库 | 适用场景 |
---|---|---|
LM Studio + LangChain | FAISS/Chroma | 需要 Python 编程 |
Ollama + LangChain | 简单易用 | 低配置设备 |
AnythinkLLM | GUI 直接管理 | 图形化操作 |
如果你不想写代码,AnythinkLLM 更合适,如果你希望更灵活,LM Studio + LangChain 更强大。