本地私有化 RAG 知识库搭建:基于 Ollama+AnythingLLM 详细指南
一、关于 RAG
1.1 简介
检索增强生成(Retrieval-Augmented Generation,RAG)是一种结合了信息检索和语言模型的技术。它通过从大规模的知识库中检索相关信息,并利用这些信息来指导语言模型生成更准确和深入的答案。这种方法在 2020 年由 Meta AI 研究人员提出,旨在解决大型语言模型(LLM)在信息滞后、模型幻觉、私有数据匮乏和内容不可追溯等问题。
简单来说,RAG 就是可以让大模型'开卷考试',从而提升回答的准确性和可解释性。
1.2 发展历程
RAG 技术的发展历程主要可以分为三个阶段:
- Naive RAG:这是基础阶段,包含索引(Indexing)、检索(Retrieval)和生成(Generation)三个基本步骤。虽然整合了外部知识库,但存在准确性低、召回率低、Prompt 组装问题及灵活性不足等限制。
- Advanced RAG:为了解决 Naive RAG 的不足,引入了预检索和后检索策略,改进了索引方法。通过更精细的数据清洗、文档结构设计及元数据添加,提升了文本一致性、准确性和检索效率。
- Modular RAG:模块化阶段提供了更大的灵活性和适应性。整合了搜索模块进行相似性检索,并在检索器中应用微调方法。允许通过多个模块进行序列化流水线或端到端训练。
随着技术发展,RAG 正朝着个性化、可自定义行为、可扩展性、混合模型和实时低延迟部署方向演进,应用场景也从问答系统扩展到推荐系统、信息抽取和报告生成等领域。
1.3 背景与痛点
自 ChatGPT 发布以来,大型语言模型(LLM)飞速发展,但在垂直领域仍面临三大核心问题:
- 知识的局限性:通用大模型训练数据多来自网络公开数据,无法获取非公开、离线或实时的内部数据(如团队业务数据、私有文档)。
- 幻觉问题:大模型基于概率生成文本,在不具备特定知识时容易一本正经地胡说八道,且用户难以区分输出正确性。
- 数据的安全性:企业和个人不愿将敏感私有数据上传至第三方平台进行训练,需要在利用大模型能力的同时保障数据安全。
检索增强生成(RAG)方案正是为了解决上述矛盾而应运而生。
1.4 工作原理
RAG 的主要流程包含以下两个核心阶段:
- 数据准备:准备知识文档(Word、TXT、PDF 等),通过文档加载器或多模态模型(如 OCR)转换为纯文本,并分割成文本块以便处理。
- 嵌入模型:将文本转换为向量形式,捕捉上下文关系和核心含义,使语义相似度计算成为可能。
- 向量数据库:存储生成的向量,优化大规模向量数据的检索效率。
- 查询检索:用户问题向量化后,在数据库中搜索语义相似的知识文本。
- 生成回答:将用户提问和检索到的信息结合构建 Prompt,输入大语言模型生成答案。
RAG 利用情境学习(In-Context Learning)原理,通过检索算法找到的信息作为上下文,帮助大模型回答问询。在实际应用中,可通过数据清洗、查询转换、重排模型等策略优化性能。
1.5 实现方案选择
市面上流行的 RAG 开源框架包括 LangChain、QAnything、RAGFlow、FastGPT 等。本文选择 AnythingLLM 进行部署,因其支持现成的商业或开源大模型,可快速构建私有 ChatGPT,且对本地部署友好。
二、环境准备
2.1 Docker Desktop 安装配置
部署 AnythingLLM 需要 Docker 环境。请确保已安装 Docker Desktop 并正常运行。
- Windows/Mac:下载并安装 Docker Desktop for Windows/Mac。
- Linux:使用官方脚本安装 Docker Engine。
启动 Docker 服务后,验证安装:


