基于RAG的本地AI知识库搭建
文章摘要:RAG(检索增强生成)是一种结合信息检索与大语言模型的技术框架,通过外部知识库检索增强回答准确性。其工作流程分为检索、增强、生成三步,有效减少模型幻觉并支持知识实时更新。搭建知识库使用RAG可降低成本,避免重新训练模型。RAG通过分片、索引和向量匹配处理知识库内容,其中Embedding技术将数据转换为语义向量,向量数据库则高效存储检索这些向量。主流向量数据库产品包括Pinecone、W
目录
RAG简介
RAG(Retrieval-Augmented Generation,检索增强生成)是一种将信息检索 技术与大语言模型 的生成能力相结合的人工智能技术框架。其核心思想是,在让大模型回答问题或生成内容之前,先从一个外部知识库中检索相关的信息,然后基于这些检索到的信息来生成答案,从而提升回答的准确性、时效性和可解释性。
RAG的工作原理
RAG的工作流程通常可以分为三个核心步骤,类似于一场“开卷考试”:
-
检索:当用户提出问题时,系统会将问题转换为向量形式,并在预先构建好的外部知识库(如公司文档、数据库、网页等)中进行相似性搜索,找出最相关的一些信息片段。
-
增强:将检索到的相关信息片段和用户的原始问题一起,通过一个精心设计的提示词模板进行组合,形成一个富含上下文信息的新的提示。
-
生成:将这个增强后的提示词提交给大语言模型,模型会依据提供的上下文信息来生成最终答案,而不是仅仅依赖其内部训练时记忆的知识。
为什么需要RAG?
RAG技术主要为了解决大语言模型固有的几个痛点:
| 优势 | 说明 |
|---|---|
| 减少“幻觉” | 通过提供事实依据,有效减少模型凭空编造信息的现象。 |
| 知识实时更新 | 无需重新训练模型,只需更新外部知识库,即可让模型获取最新信息。 |
| 答案可溯源 | 生成的答案有据可查,用户可以核对信息来源,增强信任度。 |
| 保护隐私/降低成本 | 可以将敏感数据限制在内部知识库中,无需泄露给公有模型;同时也避免了为更新知识而频繁微调模型的高昂成本。 |
为什么搭建知识库需要使用RAG?
从成本上考虑,对于个人或者是中小型企业来说,无法为了搭建工具提升效率投入太大成本。这样就导致我们无法根据知识库重新训练模型。另外还有一个原因就是训练的时间过长,满足不了及时使用的需求。
由于知识库的内容比较庞大,大模型无法支持同时读取所有信息并检索出用户需要的关键信息,也就是上下文长度不够。另外大量的数据输入也会导致模型推理速度变慢。
RAG是如何工作的?
首先简化一下,假如我们有一个N页的数据手册,RAG会将他们切分成不同的片段,但我们提问时,RAG会将我们需要的片段喂给大模型,从而提高模型回答的准确度和响应速度。但这其实是一个高度简化的过程。

分片
分片有很多种方式:
-
可以按照字数分,比如1000字或者10000字是一片。
-
也可以按照章节分,每个章节是一片。
-
或者按照段落分,每段文字是一片
-
也可按照页码分,每页是一片
索引
-
通过Embedding将片段文本转化为向量
-
将片段文本和片段向量存入向量库

进行向量匹配时其实就是将提问产生的新向量通过特定的算法和原有向量进行比对

向量
向量其实是一个数学概念




Embedding
我们来全面了解一下 Embedding(嵌入)。
简单来说,Embedding 是一种将文字、图片、声音等复杂数据转换为计算机能够理解的“数字指纹”的技术。这些“数字指纹”以向量的形式存在(即一长串数字),而语义上相似的对象,其对应的向量在空间中的距离也更近。
🔍 Embedding 是什么?
https://huggingface.co/spaces/mteb
https://hf-mirror.com/spaces/mteb/leaderboard
这两个网站可以查看当前各个模型的Embedding的能力排行
你可以将 Embedding 理解为一个高效的数据转换器:
-
核心任务:将高维、稀疏的离散数据(如单词、图片像素)映射到低维、稠密的连续向量空间。
-
关键特性:在这个向量空间中,点与点之间的距离和方向能够反映原始数据之间的语义或特征相似性。例如,“国王”的向量减去“男人”的向量再加上“女人”的向量,结果会非常接近“女王”的向量。
-
基本思想:它源于“流形假设”,即自然界的高维数据实际上是由低维的潜在规律支配的。Embedding 就是试图找到这个高维到低维的映射关系。
⚙️ Embedding 如何工作?
它的工作原理通常包含以下步骤:
-
选择或训练模型:根据任务选择预训练的 Embedding 模型(如 Word2Vec、BERT)或从零开始训练。
-
数据准备:对原始数据进行处理,如文本分词、图像归一化等。
-
生成向量:将处理后的数据输入模型,得到对应的向量表示。
-
应用向量:将这些向量用于下游任务,如相似度计算、作为机器学习模型的输入等。
在技术实现上,模型(如神经网络)通过训练学习数据中的复杂模式。例如,Word2Vec 通过预测单词的上下文来学习词向量,使得出现在相似上下文中的单词拥有相近的向量表示
📊 能处理哪些类型的数据?
Embedding 技术非常灵活,可应用于多种数据类型:
-
词语:这是最常见的应用,即词嵌入(Word Embedding),如 Word2Vec、GloVe 生成的词向量。
-
文本:将整个句子、段落或文档表示为向量,常用模型有 BERT、Doc2Vec 等。
-
图像:通过卷积神经网络(CNN)如 VGG、ResNet 将图像转换为特征向量,用于图像检索、分类等。
-
音频:使用深度学习模型从音频信号中提取特征向量,应用于语音识别、音乐分类等。
-
图数据:将图中的节点或整个图结构表示为向量,用于社交网络分析、推荐系统等。
💡 为什么要使用 Embedding?
与传统方法(如 One-Hot 编码)相比,Embedding 具有显著优势:
| 特性 | 传统方法(如 One-Hot 编码) | Embedding 技术 |
|---|---|---|
| 语义理解 | 无法捕捉任何语义关系 | 能深度捕捉语义和语法关系 |
| 数据维度 | 维度极高且稀疏,计算效率低 | 低维稠密,大幅提升计算效率 |
| 泛化能力 | 差,无法处理未在词表中的词 | 强,相似实体在向量空间中邻近 |
此外,Embedding 还能有效提升模型的泛化能力,并方便进行数据可视化(如通过 t-SNE 技术将高维向量降至 2D 或 3D 进行观察)。
🛠️ 主要应用场景
Embedding 是许多现代 AI 应用的核心基石:
-
自然语言处理:搜索引擎、文本情感分析、机器翻译、智能聊天机器人(如 ChatGPT 就利用了 Embedding 来理解语言关系)。
-
推荐系统:通过为用户和物品(如商品、电影)生成 Embedding,计算其相似度来进行个性化推荐。
-
计算机视觉:图像搜索、人脸识别、自动驾驶中的物体检测等。
-
异常检测:通过分析交易、网络行为等数据的 Embedding 来识别欺诈或异常模式。
⚠️ 技术挑战与局限
尽管强大,Embedding 技术也面临一些挑战:
-
数据依赖性:Embedding 的质量严重依赖于训练数据。如果数据存在偏见,生成的向量也会带有偏见。
-
黑盒问题:高维向量空间中的关系有时难以直观解释。
-
计算资源:训练大型、高质量的 Embedding 模型需要可观的算力和数据。
-
处理新词/专业术语:对于未在训练语料中出现过的新词或专业术语,传统静态 Embedding 模型处理效果不佳(动态模型如 BERT 能部分解决此问题)。
向量数据库
简单来说,向量数据库是一种专门用于存储、检索和管理由Embedding技术生成的向量数据的数据库。它是构建现代AI应用(特别是RAG系统)的关键基础设施,充当着“AI记忆”或“向量搜索引擎”的角色。
📚 是什么?
向量数据库的核心是处理 高维向量。与传统的基于精确值匹配的数据库(如用SQL查询“age=25”)不同,向量数据库的核心能力是进行 相似性搜索,即根据向量的“远近”找到最相似的数据。
你可以把它想象成一个智能地图册:
-
传统数据库:像一本按精确邮政编码排序的地址簿。
-
向量数据库:像一张地图,你可以用手指一个点(你的查询向量),它能立刻告诉你周围有哪些最相似的地点(数据库中的向量),即使你给不出精确的名称。
🎯 为什么需要向量数据库?
当AI应用需要处理非结构化数据(文本、图像、音频)的语义时,传统的数据库就力不从心了。向量数据库应运而生,解决了以下核心问题:
-
高效相似性搜索:在海量向量中(例如十亿级),快速找到与目标向量最相似的Top-K个结果。这是其最核心的功能。
-
管理AI原生数据:为Embedding模型生成的向量提供原生的存储、索引和查询支持。
-
支撑AI应用:是RAG、推荐系统、内容去重、异常检测等应用的底层基石。
回顾我们之前的讨论,Embedding 负责将数据“翻译”成向量,而向量数据库 负责高效地“存放”和“查找”这些向量。在RAG 流程中,向量数据库就是那个外部知识库 的核心组件,负责存储文档片段(Chunk)的向量,并在提问时快速检索出相关片段。
⚙️ 核心工作原理
向量数据库的工作流程通常包含以下几个关键环节:
-
向量化:使用Embedding模型(如OpenAI的text-embedding模型、BERT等)将原始数据(文本、图片等)转换为向量。这一步通常在存入数据库前完成。
-
索引:这是向量数据库的“魔法”所在。为了加速搜索,数据库会对所有向量建立专门的索引。最常用的索引类型是近似最近邻索引,它通过牺牲微小的精度来换取数百倍的速度提升。常见的索引算法有:HNSW、IVF、PQ 等。
-
存储:将向量及其关联的元数据(例如,该向量对应的原始文本、来源、ID等)一起存储。很多向量数据库支持对元数据进行传统数据库那样的过滤(如
where author = ‘张三’)。 -
查询:
-
用户输入一个问题。
-
系统使用相同的Embedding模型将问题转换为查询向量。
-
向量数据库在索引中执行相似性搜索,找到与查询向量最相似的K个向量。
-
返回这些向量对应的原始数据(或ID)给应用程序。
-
🛠️ 主要应用场景
向量数据库是AI原生应用的“标配”,主要应用包括:
| 应用领域 | 具体说明 |
|---|---|
| 检索增强生成 | RAG的核心。存储企业知识、产品文档的向量,为LLM提供实时、准确的检索信息。 |
| 语义搜索 | 超越关键词匹配,实现“用意思搜内容”。例如,搜索“养宠物的好处”,也能返回关于“犬类陪伴”的文章。 |
| 推荐系统 | 将用户和商品表示为向量,通过计算向量相似度进行个性化推荐(“喜欢A商品的人也喜欢B”)。 |
| 图像/音视频搜索 | 以图搜图、以歌搜歌、视频内容检索等。 |
| 内容去重与聚类 | 识别相似或重复的内容,或将大量内容自动分门别类。 |
| 异常检测 | 在网络安全、金融风控中,将正常行为模式建模为向量簇,偏离簇心的即为异常。 |
🏆 主流产品与技术挑战
主流向量数据库产品:
-
Pinecone:云原生、全托管,以易用性和高性能著称。
-
Weaviate:开源,集成了向量搜索和对象存储,支持GraphQL。
-
Qdrant:开源,用Rust编写,性能优异,API友好。
-
Milvus:开源,专为海量向量搜索设计,架构复杂但功能强大。
-
Chroma:轻量级,开源,专注于AI原生和开发者体验。
-
各大云厂商:如Azure AI Search, Elasticsearch(通过插件), Redis, PostgreSQL(通过pgvector扩展)等也纷纷增加了向量搜索能力。
技术挑战与考量:
-
精度与速度的权衡:近似搜索的精度损失是否在可接受范围内。
-
可扩展性:数据量从百万级增长到百亿级时,如何保持稳定的查询延迟。
-
多模态支持:能否统一处理来自文本、图像、视频等多种模态的向量。
-
混合搜索:能否将向量相似性搜索与传统的关键词过滤、范围查询等无缝结合。
-
运维成本:自建开源方案需要专业的运维团队,而全托管服务则需考虑成本。
🔮 总结与展望
向量数据库填补了AI数据基础设施中的关键空白,使得基于语义的智能应用得以规模化落地。它不再是简单的存储工具,而是一个复杂的计算引擎。
未来,向量数据库的发展趋势将更加紧密地与LLM、多模态模型结合,并提供更智能的混合检索能力(同时用好向量搜索和关键词搜索),以及更强大的实时性和可观测性工具。
召回

召回的结果不一定是十个,只要别太多就行,计算向量相似度需要有一个计算算法,将每个片段的向量相似度计算后排序即可取出约定数量的片段。计算向量相似度有很多种方案,目前比较主流的有余弦定理、欧氏距离和点积
向量只是一个中间产物,本质还是操作片段



重排
重排就是在召回的10份中选三个最接近用户的。但是为什么不在召回阶段就直接选择三个呢,因为召回和重排使用的算法不一样。
生成

基于Anthing LLM搭建知识库
Download AnythingLLM for Desktop
可以访问上方链接下载

教程可以看这个
Support · Cloudflare Support docs
我的IP被这个网站搬了,不过后续过程很简单,就不多说了
基于Cherry Studio搭建知识库
下载完成后进行配置,首先点击设置

选择硅基流动,也可以是其它的,选这个是因为免费

没有账号可以注册一个




随便找个文件测一下,显示对号表示分片完成

官方文档中有描述使用的向量数据库

用我刚刚导入的两个文件测试一下发现可以匹配了

为了让匹配更加精准可以加入重排序模型



基于IMA搭建知识库
不涉及保密的话可以无脑用这个,啥都不用管直接用就行,还能多端互通
引用说明
基础知识部分的图片借鉴了一些B站 up的讲解,非常详细,侵权请联系我删除
【RAG 工作机制详解——一个高质量知识库背后的技术全流程】 https://www.bilibili.com/video/BV1JLN2z4EZQ/?share_source=copy_web&vd_source=14a18fc17fc55c8c188a7883c6a4c42e
更多推荐


所有评论(0)