大模型技术之-RAG-搭建企业私有个人知识库

1、RAG的理解

1.1 什么是RAG

RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合信息检索(Retrieval)与文本生成(Generation)的技术,旨在提升大语言模型在回答专业问题时的准确性可靠性

1.2 为什么需要RAG

背景:

  • 大模型的知识冻结
  • 大模型幻觉

举例1:

随着 LLM 规模扩大,训练成本与周期相应增加。因此,包含最新信息的数据难以融入模型训练过程,无法及时反映最新的信息或动态变化,导致 LLM 难以应对诸如“请推荐当前热门影片”等时间敏感性问题。

举例2:

大型语言模型(LLM)的训练依赖于网络上海量公开的静态数据,而某些特定领域(如企业内部资料、专有技术文档等)的数据通常不会作为公开的训练数据,导致模型在面对这些领域的查询时,可能因缺乏足够的信息而生成不准确甚至虚构的回复。

解决方案:

为了解决这一问题,RAG技术通过引入向量数据库(Vector Database)作为外部知识源,将模型缺失的知识以结构化的形式提供。

举例1:

LLM在考试的时候面对陌生的领域,答复能力有限,然后就准备放飞自我了,而此时RAG给了一些提示和思路,让LLM懂了开始往这个提示的方向做,最终考试的正确率从60%到了90%!

举例2:

1.3 执行流程



图中 RAG 检索增强生成完整流程分步解析

整体分为两大阶段:文档入库预处理阶段(离线构建知识库)用户提问推理阶段(在线问答)

离线阶段:本地文档处理,构建向量知识库(上半部分流程)

步骤 1:加载本地源文件

数据源:本地文件,支持两类数据

  • 结构化:二维表格

  • 非结构化:PDF、Word、TXT 等文档
    组件:非结构化数据加载器 Unstructured Loader
    作用:读取各类文件,统一提取出纯文本Text

步骤 2:文本切分 Text Spliter

将完整长文本,分割成多段短文本块Text Chunk
目的:

  1. 适配嵌入模型、大模型的输入长度限制;

  2. 缩小检索粒度,提高后续相似度匹配精度。

步骤 3:嵌入模型编码(Embedding Model)

把每一段Text Chunk送入嵌入模型,将自然语言文本转换成向量嵌入 Vector Embeddings
本质:把文字映射为高维数字向量,语义相近的文本向量距离更近。

步骤 4:向量入库存储 & 索引

将生成好的文本向量 + 原始文本块,存入向量数据库 Vector Database,同时建立向量索引。
作用:索引用于加速后续相似度检索,完成知识库构建,离线流程结束。


在线阶段:用户提问,检索 + 大模型生成答案(下半部分流程)

步骤 1:用户输入查询 User Query

用户输入自然语言问题,发起问答请求。

步骤 2:问题向量化编码

复用同一个嵌入模型 Embedding Model,把用户问题同样转换成Vector Embeddings向量。

步骤 3:向量数据库相似度检索 Similarity Search

拿着问题向量,在向量库中计算向量距离,匹配出语义最相近的若干文本块。
取出这些原文片段,作为回答的上下文 Context

步骤 4:组装提示词 Prompt

通过提示词模板 Prompt Template,拼接两段内容:
Prompt = 检索到的上下文Context + 用户原始问题User Query
模板会规范格式,告诉大模型 “只能依据给的上下文回答,不要编造信息”。

步骤 5:大模型 LLM 生成答案

把组装完成的完整 Prompt 发送给大语言模型 LLM,LLM 结合参考上下文理解问题,推理生成专属回答Answer

步骤 6:返回结果给用户

将 LLM 输出的最终回答发送展示给用户,完整问答流程闭环。


整体核心逻辑总结

  1. 离线:文档→分块→向量化→存向量库(搭建私有知识库)

  2. 在线:用户问题→向量化→检索相似文档片段→拼接上下文 Prompt→LLM 基于真实文档作答

  3. 该架构就是标准RAG(Retrieval-Augmented Generation,检索增强生成),解决大模型 “知识滞后、凭空幻觉、无法读取私有本地文件” 的问题。

检索-增强-生成过程:检索可以理解为第10步,增强理解为第13步(这里的提示词包含检索到的数据),生成理解为第15步。

强调一下难点的步骤(蓝色部分):

这里有三个位置涉及到大模型的使用:

  • 第3步向量化时,需要使用EmbeddingModels。
  • 第7步重排序时,需要使用RerankModels。可对初步召回的较多 chunk(如 top 20 或 top 50)进行精排,提高召回准确率,防止LLM 处理无关信息,减少时间和成本。
  • 第9步生成答案时,需要使用LLM。

Reranker的使用场景:

  • 适合:追求回答高精度和高相关性的场景中特别适合使用 Reranker,例如专业知识库或者客服系统等应用。
  • 不适合:Reranker相较于RAG的成本更高。此外,引入Reranker会增加召回时间,增加检索延迟。服务对响应时间要求高时,使用Reranker可能不合适。

2、知识库的概述

2.1 哪些人需要搭建(个人)知识库

小型企业主或创业者:查阅和分享文件、文档、客户反馈、市场分析,大大提升你的工作效率。

职场打工人或自由职业者:无论是写作、设计、开发,还是视频制作,知识库都可以管理大量的素材、创意和客户需求,通过知识库,你可以轻松存储和搜索这些资料,并通过大模型二次创作

教育工作者或学生:利用知识库管理教学资源、课程安排、教材资料等,学生则可以将课堂笔记、参考书目和作业整理在一起,随时复习和备考。

生活中的普通人:无论是旅行计划、兴趣爱好,还是学习笔记,全部都可以集中在知识库管理。

2.2 知识库各个搭建平台对比

很多平台都支持个人知识库的搭建。

2.2.1 核心定位和技术特点

AnythingLLM、CherryStudio桌面/图形化 AI 助手 + 知识库(RAG),支持对接云模型与本地模型;适合个人/小团队快速验证。在“多租户治理、复杂系统集成、生产化观测”等方面通常不如平台型/专业引擎。

Dify、FastGPTLLM Agent 与工作流编排平台,支持创建知识库,支持云端本地部署(可用Docker)。

RAGFlow:基于深度文档理解的开源 RAG 引擎,强调复杂文档解析、引用与可视化干预;也支持 Agent 能力,但通用工作流生态通常不如“全能型 Agent 平台”。(支持Docker部署)

2.2.2 典型场景与选型建议

1. 个人知识管理(轻量级)

  • 需求:快速验证、低预算(开发成本 <= 1周),个人/小团队使用,以“能用”为主(文档以 Markdown、PDF、网页为主)。

  • 推荐工具:Cherry Studio / AnythingLLM

  • 理由:

    • 部署和操作简单,上手快
    • 可直接对接在线大模型 API,也可接本地模型,适合快速试错
    • 支持多模型对话(如 DeepSeek + Ollama),适合整合笔记/文献

2. 应用化交付与团队协作(平台型场景)

  • 需求:
    • 将知识库能力封装为可复用的 AI 应用或 Agent
    • 支持多成员协作、权限控制、应用发布与版本迭代
    • 需要流程编排(如检索 → 工具调用 → 多轮推理),而不仅是简单问答
  • 推荐工具:Dify / FastGPT
  • 理由:
    • 提供完整的Agent / Workflow 编排能力,知识库(RAG)作为其中一环
    • 支持多应用管理、角色与权限控制,更适合团队或内部平台使用
    • 易于与业务系统集成(API / Webhook),便于“从 Demo 走向可用系统”

3. 企业级文档解析(高精度需求)

  • 需求:面向复杂文档(长PDF、复杂版式、表格/图片混排、扫描件等),强调解析质量与可控性,要求可追溯引用。
  • 推荐工具:RAGFlow
  • 理由:
    • 强调深度文档理解,解析/分块结果可视化,便于检查与必要时干预
    • 对复杂格式更友好,适合把“文档解析质量”作为核心竞争力的场景

3、Cherry-Studio搭建个人知识库

后续我们会重点拿Coze和Dify讲工作流和智能体,所以知识库这里,我们选另外两个非常不错的平台:Cherry-Studio 和腾讯出品的ima

3.1 Cherry-Studio特点

小白友好:Cherry Studio 致力于降低技术门槛,零基础用户也能快速上手,让用户专注于工作、学习或者创作。

一问多答:支持同一问题通过多个模型同时生成回复,方便用户对比不同模型的表现

助手市场:内置千余个行业专用助手,涵盖翻译、编程、写作等领域,同时支持用户自定义助手。

服务商模型聚合:支持 OpenAI、Gemini、Anthropic、Azure 等规范的三方服务商接入,兼容性强。

数据安全:支持全本地场景使用,结合本地大模型,避免数据泄漏风险。

3.2 LLM的使用

步骤1:下载与安装客户端工具

Cherry Studio官网:https://cherry-ai.com/

安装过程:傻瓜式安装,这里省略。

步骤2:硅基流动注册账号

这里的大模型,以硅基流动平台为例说明。

网址:https://siliconflow.cn/zh-cn/models

用手机号注册即可,新注册的账号有免费的token可以使用。

步骤3:创建API密钥

步骤4:复制API密钥

步骤5:配置API密钥

步骤6:选择大语言模型

3.3 知识库的使用

步骤1:添加嵌入模型

根据下图确认名称:

回到Cherry Studio添加:

步骤2:创建知识库


上面的pro版本的搜索精度更高,但收费。

提供知识库内容:


这里支持不同格式文件、文件夹、网页地址、大段文本内容等方式添加到知识库。

注意:上传的文件中如果有手写内容,或者表格或复杂的数据公式,那解析的效果就会较差。

步骤3:支持直接检索

检索:

此时的检索,基于RAG(检索增强生成)技术,在数据库中去搜索相应的答案。这里还包括占比得分。

步骤4:基于知识库生成

选中后,提问:

补充:增强文档解析能力

如果上传的文件中如果有手写内容,或者表格或复杂的数据公式,那解析的效果就会较差。这里可以提前将文件进行解析处理,然后再上传到个人知识库。

使用工具:Doc2X

网址:https://doc2x.noedgeai.com/

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.4 流程分析

4、ima搭建个人知识库

4.1 ima特点

  • 支持客户端、小程序、网页等多端同步访问
  • 支持腾讯混元大模型、DeepSeek-R1满血版
  • 通过微信提问,模型基于知识库生成答案

4.2 搭建知识库过程

步骤1:下载-安装

网址:https://ima.qq.com/

安装好以后,登录一下即可:

步骤2:新建知识库

步骤3:导入本地文件

步骤4:基于知识库"生成"

4.3 组合互联网网页构成知识库

步骤1:我们可以在微信公众号搜索相关主题的公众号文章,并将他们加入到ima。

步骤2:在ima中新建个人知识库,将相关文章加入到此知识库。

步骤3:在文章导入完成以后,可以生成自己的知识库,进而结合大模型进行搜索

4.4 添加第三方知识库

在pc端查看:

添加到相关知识库之后,不管在手机端还是同账号的PC端,都可以查看。

5、使用Dify搭建知识库

5.1 Dify介绍

Dify(DefineModify)是一个开源的大语言模型(LLM)应用开发平台,由苏州语灵人工智能推出。

Dify 为 AI Agent 提供了50多种内置工具,如谷歌搜索、DALL·E、Stable Diffusion 和 WolframAlpha 等。

官网:https://dify.ai/zh

说明:https://github.com/langgenius/dify/blob/main/README_CN.md

https://docs.dify.ai/zh/home

5.2 源数据格式

通过使用Dify,可以方便快捷地构建私有知识库。可以将知识库放在工作流中,协同多种工具一起使用。而且Dify提供的知识库功能有着简洁的可视化界面,可以很方便地进行管理,适用于个人和团队。

目前Dify 支持多种源数据格式,包括:

  • 长文本内容:TXT、Markdown、DOCX、HTML、JSON、 PDF

  • 结构化数据:CSV、Excel

注:私有知识库要达到良好的效果,必须与embedding模型和reranker模型相结合,请在xinterface中启用相关模型并引入Dify。

5.3 构建私有知识库

步骤1:首先创建一个新的知识库

步骤2:上传知识库文件

这里准备的是一部刑法的txt格式文本,用自然段的形式划分了每一条法则

步骤3:分段设置

大语言模型存在有限的上下文窗口,通常需要将整段文本进行分段处理后,将与用户问题关联度最高的几个段落召回,即分段 top-K 召回模式。此外,在用户问题与文本分段进行语义匹配时,合适的分段大小将有助于匹配关联性最高的文本内容,减少信息噪音。

分段标识符如果是\n,则是以换行为一个分段;如果是\n\n,则是以一个段落为一个分段。点击预览块查看目前块划分的情况。

分段重叠长度一般是分段最大长度的10%-20%

知识库文档里如果有url、邮箱,还可以把这些过滤掉。

步骤4:选择索引方式

这里自动选择高质量。高质量的准确性更高,但是token消耗也会增加。如果使用的是部署到本地的模型,花费就没有影响。

还有Q&A方式。 如果文档是问答方式,那选择这种方式是最契合的。

步骤5:检索设置

在这里可以选择Embedding模型和Rerank模型,也可以设置Top K,也就是选出最相似的前n条。选择Score阈值,即筛选文本的相似度阈值。

混合检索:既包括向量检索(涉及rerank检索的大模型),也包含全文检索。

设置完成后,保存并处理即可。

5.4 测试

接下来我们进行测试使用。创建一个聊天助手,将提示词写为

你是一个法律小助手,请只根据知识库中的信息,简要回答用户提问的案件触犯了哪些法律

知识库选择刚才添加的刑法.txt,然后可以开始提问。

可以观察到,聊天助手会自动引用知识库中的内容进行回答。