一文搞懂大模型RAG知识库与知识图谱
RAG技术通过动态检索外部知识库解决大模型幻觉与知识滞后问题,其核心包括构建向量知识库和知识图谱,结合文本分块、向量化存储及实体关系抽取,并运用Prompt工程优化检索与生成,显著提升回答的准确性与时效性。
# 解密大模型如何通过RAG技术突破知识边界,实现精准回答
大模型虽然强大,但其知识受限于训练数据,存在“幻觉”和“知识滞后”问题。**RAG(检索增强生成)** 技术通过动态检索外部知识库,让大模型在回答时不再“闭门造车”,而是先查资料再回答,大幅提升准确性和时效性。本教程将带你深入理解RAG的原理、知识库与知识图谱的构建方法,以及Prompt工程与RAG结合的实战技巧。
## 一、RAG(检索增强生成)是什么?
RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合信息检索与文本生成的人工智能技术,旨在通过引入外部知识库,解决大语言模型的幻觉问题。其核心目标是让大语言模型(LLM)在回答问题时不再仅依赖训练时的固化知识,而是动态检索最新或特定领域的资料来辅助生成答案。
RAG结合了信息检索与生成模型,通过以下三阶段工作:
- **检索**:从外部知识库(如文档、数据库)中搜索与问题相关的信息。
- **增强**:将检索结果作为上下文输入,辅助生成模型理解问题背景。
- **生成**:基于检索内容和模型自身知识,生成连贯、准确的回答。
> **小提示**:RAG特别适合需要实时更新知识(如新闻、法规)或专业领域(如医疗、法律)的场景。如果你的大模型经常回答“过时”或“编造”的内容,RAG是首选解决方案。
---
## 二、知识库的构建:让RAG拥有“外设大脑”
知识库(Knowledge Base)是结构化、易操作的知识集群,通过系统性整合领域相关知识(如理论、事实、规则等),为问题求解、决策支持和知识共享提供基础平台。
RAG构建知识库的核心在于将外部知识检索与大语言模型生成能力结合,通过高效检索为生成提供上下文支持。实战的重点在于两个环节:**文本分块(Chunking)** 和**向量化(Embedding)**。
### 1. 文本分块(Chunking)
文本分块是将长文本分割为较小、可管理的片段,以便更高效地处理和分析。常见的策略是**递归分块**:先按段落、再按句子、最后按标点符号拆分,同时保留重叠部分以维持上下文连贯性。
**实战代码示例**(使用LangChain):
```python
# 依赖安装:pip install langchain langchain-text-splitters
from langchain_text_splitters import RecursiveCharacterTextSplitter
# 示例长文本(替换为实际文本)
text = """
自然语言处理(NLP)是人工智能领域的重要分支,涉及文本分析、机器翻译和情感分析等任务。
分块技术可将长文本拆分为逻辑连贯的语义单元,便于后续处理。
"""
# 初始化递归分块器(块大小300字符,重叠50字符保持上下文)
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=300,
chunk_overlap=50,
separators=["nn", "n", "。", "!", "?"] # 优先按段落/句子分界
)
# 执行分块
chunks = text_splitter.split_text(text)
# 打印分块结果
for i, chunk in enumerate(chunks):
print(f"Chunk {i+1}:n{chunk}n{'-'*50}")
```
> **常见问题**:分块大小如何选择?
> - 如果回答需要精确引用原文片段(如合同条款),建议每块200~300字符。
> - 如果回答需要综合多个知识点(如综述性回答),建议每块500~800字符,并适当增加重叠(如100字符)。
---
### 2. 向量化与存储
向量化通过Embedding模型将非结构化数据(文本、图像等)映射为高维语义向量,存储则依托专用向量数据库(如FAISS、Milvus、ElasticSearch的dense_vector字段)构建高效索引,支持近似最近邻搜索(ANN)实现大规模向量数据的快速相似性匹配。
**实战代码示例**(使用Sentence-Transformers + FAISS):
```python
# 依赖安装:pip install sentence-transformers faiss-cpu
from sentence_transformers import SentenceTransformer
from langchain_community.vectorstores import FAISS
# 1. 文本向量化(使用MiniLM-L6预训练模型)
model = SentenceTransformer('paraphrase-MiniLM-L6-v2')
embeddings = model.encode(chunks)
# 2. 向量存储到FAISS索引库
vector_db = FAISS.from_texts(
texts=chunks,
embedding=embeddings,
metadatas=[{"source": "web_data"}] * len(chunks) # 可添加元数据
)
# 保存索引到本地
vector_db.sa ve_local("my_vector_db")
# 示例查询:检索相似文本
query = "什么是自然语言处理?"
query_embedding = model.encode([query])
scores, indices = vector_db.similarity_search_with_score(query_embedding, k=3)
print(f"Top 3相似块:{indices}")
```
> **小提示**:向量数据库选择FAISS适合中小企业或原型开发;如果数据量超过百万级且需要分布式支持,推荐Milvus或Pinecone。
---
## 三、知识图谱的构建:让RAG拥有“推理能力”
知识图谱(Knowledge Graph)是一种通过实体与关系构建的语义化网络结构,支持推理与复杂查询。传统知识库多以非关联的扁平化方式存储数据,而知识图谱提供了结构化推理能力,使RAG系统从“信息检索器”进化为“知识推理引擎”。
RAG构建知识图谱的关键在于检索与生成的协同,其流程包括:
- **数据预处理**:将文档分割为文本块(chunking),并通过命名实体识别(NER)提取实体与关系。
- **知识图谱索引**:基于提取的实体与关系,构建初始知识图谱后,运用聚类算法(例如Leiden算法)对图谱中的节点进行社区划分。
- **检索增强**:在用户查询时,通过本地搜索(基于实体)或全局搜索(基于数据集主题)增强上下文,提升生成答案的准确性。
常见的实现框架包括 **GraphRAG**、**Graphusion** 等,它们能够自动从非结构化文本中抽取实体关系,并构建可查询的图谱结构。例如,GraphRAG利用LLM提取三元组(头实体、关系、尾实体),再通过Leiden社区检测将相关实体聚类,从而实现多跳推理。
> **常见问题**:知识图谱和向量知识库能同时使用吗?
> 可以。混合架构(Hybrid RAG)中,向量库负责语义相似检索,知识图谱负责关系推理。例如,用户问“甲公司的竞争对手有哪些?”,向量库可检索到相关文档片段,图谱则根据“竞争关系”边直接返回关联实体。
---
## 四、Prompt + RAG 实战应用技巧
结合Prompt工程与RAG,需围绕**数据准备、检索优化、生成控制**等环节展开。下面分别说明。
### 1. 数据准备与向量化
(此部分已在章节二中详述,此处强调关键点)
- 文档预处理:通过多模态数据清洗、词形还原与依存句法分析实现文本规范化。
- 分块策略:采用递归分割与语义边界识别技术,结合知识图谱关联优化,构建动态重叠的上下文连贯单元。
### 2. 检索优化技术
通过以下方法提升检索质量:
- **多路召回**:同时使用向量检索(语义相似) + 关键词检索(BM25) + 知识图谱检索(关系匹配),合并结果后去重。
- **HyDE(假设文档嵌入)**:先生成一个假设回答,再用该回答作为查询向量去检索,提高召回相关性。
- **动态重排**:使用交叉编码器(Cross-Encoder)对初步召回结果进行排序,过滤掉不相关的片段。
### 3. Prompt 工程实践
#### 结构化输入设计
基于角色和场景进行约束。例如:
**场景**:法律合同条款咨询
**系统Prompt示例**:
```
你是一位资深法律顾问,专门处理合同纠纷。用户的问题涉及《民法典》第580条。
请按以下步骤回答:
1. 检索相关法律条文和判例。
2. 分析用户问题中的关键事实。
3. 分点解释法律适用,并标注引用来源(条款编号、案例编号)。
4. 最终给出清晰的法律建议。
```
#### 输出模板控制
通过预设模板化输出框架确保格式规范,并设置动态防护栏机制过滤敏感词与校验事实一致性,实现内容生成的安全性与合规性。
**示例模板**(用于产品说明书问答):
```
## 问题:{用户问题}
## 依据知识:
{检索到的知识片段}
## 回答:
1. {要点1}
2. {要点2}
## 引用来源:
{来源文档名称、页码}
```
> **小提示**:在Prompt中明确要求模型“仅基于检索内容回答,不要自行发挥”,可以有效减少幻觉。
---
## 五、常见问题与解答
**Q1:RAG和微调有什么区别?**
- 微调:让模型记住新知识,适用于固定规则或高频使用的知识,但更新成本高。
- RAG:通过检索动态注入知识,适用于知识频繁更新的场景,无需重新训练模型。
**Q2:如何选择向量化模型?**
- 中文场景:推荐 `BAAI/bge-large-zh-v1.5` 或 `shibing624/text2vec-base-chinese`。
- 英文场景:`all-MiniLM-L6-v2` 轻量高效,`text-embedding-ada-002`(OpenAI)效果更佳。
- 句向量模型:`sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2` 支持多语言。
**Q3:检索结果太多或太少怎么办?**
- 太多:增加 `top_k` 阈值(例如从5降到3),或使用重排模型筛选。
- 太少:降低相似度分数阈值,或扩大分块重叠量,或关联知识图谱扩展查询。
**Q4:RAG能否处理多模态数据(图片、表格)?**
- 可以。先将图片/表格分别用视觉模型(如CLIP)或表格解析工具转为文本描述,再作为普通文本块存入向量库;或者使用多模态向量数据库(如Wea viate)直接存储向量。
---
通过以上对RAG技术原理、知识库与知识图谱构建方法、以及Prompt工程实战的拆解,相信你已经掌握了让大模型突破知识边界的关键技能。无论是在智能客服、文档问答还是企业知识管理中,RAG都能为你的应用注入精准、实时、可解释的生成能力。
来源:https://www.53ai.com/news/RAG/2025062385741.html
## 一、RAG(检索增强生成)是什么?
RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合信息检索与文本生成的人工智能技术,旨在通过引入外部知识库,解决大语言模型的幻觉问题。其核心目标是让大语言模型(LLM)在回答问题时不再仅依赖训练时的固化知识,而是动态检索最新或特定领域的资料来辅助生成答案。
RAG结合了信息检索与生成模型,通过以下三阶段工作:
- **检索**:从外部知识库(如文档、数据库)中搜索与问题相关的信息。
- **增强**:将检索结果作为上下文输入,辅助生成模型理解问题背景。
- **生成**:基于检索内容和模型自身知识,生成连贯、准确的回答。
> **小提示**:RAG特别适合需要实时更新知识(如新闻、法规)或专业领域(如医疗、法律)的场景。如果你的大模型经常回答“过时”或“编造”的内容,RAG是首选解决方案。
---
## 二、知识库的构建:让RAG拥有“外设大脑”
知识库(Knowledge Base)是结构化、易操作的知识集群,通过系统性整合领域相关知识(如理论、事实、规则等),为问题求解、决策支持和知识共享提供基础平台。
RAG构建知识库的核心在于将外部知识检索与大语言模型生成能力结合,通过高效检索为生成提供上下文支持。实战的重点在于两个环节:**文本分块(Chunking)** 和**向量化(Embedding)**。
### 1. 文本分块(Chunking)
文本分块是将长文本分割为较小、可管理的片段,以便更高效地处理和分析。常见的策略是**递归分块**:先按段落、再按句子、最后按标点符号拆分,同时保留重叠部分以维持上下文连贯性。
**实战代码示例**(使用LangChain):
```python
# 依赖安装:pip install langchain langchain-text-splitters
from langchain_text_splitters import RecursiveCharacterTextSplitter
# 示例长文本(替换为实际文本)
text = """
自然语言处理(NLP)是人工智能领域的重要分支,涉及文本分析、机器翻译和情感分析等任务。
分块技术可将长文本拆分为逻辑连贯的语义单元,便于后续处理。
"""
# 初始化递归分块器(块大小300字符,重叠50字符保持上下文)
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=300,
chunk_overlap=50,
separators=["nn", "n", "。", "!", "?"] # 优先按段落/句子分界
)
# 执行分块
chunks = text_splitter.split_text(text)
# 打印分块结果
for i, chunk in enumerate(chunks):
print(f"Chunk {i+1}:n{chunk}n{'-'*50}")
```
> **常见问题**:分块大小如何选择?
> - 如果回答需要精确引用原文片段(如合同条款),建议每块200~300字符。
> - 如果回答需要综合多个知识点(如综述性回答),建议每块500~800字符,并适当增加重叠(如100字符)。
---
### 2. 向量化与存储
向量化通过Embedding模型将非结构化数据(文本、图像等)映射为高维语义向量,存储则依托专用向量数据库(如FAISS、Milvus、ElasticSearch的dense_vector字段)构建高效索引,支持近似最近邻搜索(ANN)实现大规模向量数据的快速相似性匹配。
**实战代码示例**(使用Sentence-Transformers + FAISS):
```python
# 依赖安装:pip install sentence-transformers faiss-cpu
from sentence_transformers import SentenceTransformer
from langchain_community.vectorstores import FAISS
# 1. 文本向量化(使用MiniLM-L6预训练模型)
model = SentenceTransformer('paraphrase-MiniLM-L6-v2')
embeddings = model.encode(chunks)
# 2. 向量存储到FAISS索引库
vector_db = FAISS.from_texts(
texts=chunks,
embedding=embeddings,
metadatas=[{"source": "web_data"}] * len(chunks) # 可添加元数据
)
# 保存索引到本地
vector_db.sa ve_local("my_vector_db")
# 示例查询:检索相似文本
query = "什么是自然语言处理?"
query_embedding = model.encode([query])
scores, indices = vector_db.similarity_search_with_score(query_embedding, k=3)
print(f"Top 3相似块:{indices}")
```
> **小提示**:向量数据库选择FAISS适合中小企业或原型开发;如果数据量超过百万级且需要分布式支持,推荐Milvus或Pinecone。
---
## 三、知识图谱的构建:让RAG拥有“推理能力”
知识图谱(Knowledge Graph)是一种通过实体与关系构建的语义化网络结构,支持推理与复杂查询。传统知识库多以非关联的扁平化方式存储数据,而知识图谱提供了结构化推理能力,使RAG系统从“信息检索器”进化为“知识推理引擎”。
RAG构建知识图谱的关键在于检索与生成的协同,其流程包括:
- **数据预处理**:将文档分割为文本块(chunking),并通过命名实体识别(NER)提取实体与关系。
- **知识图谱索引**:基于提取的实体与关系,构建初始知识图谱后,运用聚类算法(例如Leiden算法)对图谱中的节点进行社区划分。
- **检索增强**:在用户查询时,通过本地搜索(基于实体)或全局搜索(基于数据集主题)增强上下文,提升生成答案的准确性。
常见的实现框架包括 **GraphRAG**、**Graphusion** 等,它们能够自动从非结构化文本中抽取实体关系,并构建可查询的图谱结构。例如,GraphRAG利用LLM提取三元组(头实体、关系、尾实体),再通过Leiden社区检测将相关实体聚类,从而实现多跳推理。
> **常见问题**:知识图谱和向量知识库能同时使用吗?
> 可以。混合架构(Hybrid RAG)中,向量库负责语义相似检索,知识图谱负责关系推理。例如,用户问“甲公司的竞争对手有哪些?”,向量库可检索到相关文档片段,图谱则根据“竞争关系”边直接返回关联实体。
---
## 四、Prompt + RAG 实战应用技巧
结合Prompt工程与RAG,需围绕**数据准备、检索优化、生成控制**等环节展开。下面分别说明。
### 1. 数据准备与向量化
(此部分已在章节二中详述,此处强调关键点)
- 文档预处理:通过多模态数据清洗、词形还原与依存句法分析实现文本规范化。
- 分块策略:采用递归分割与语义边界识别技术,结合知识图谱关联优化,构建动态重叠的上下文连贯单元。
### 2. 检索优化技术
通过以下方法提升检索质量:
- **多路召回**:同时使用向量检索(语义相似) + 关键词检索(BM25) + 知识图谱检索(关系匹配),合并结果后去重。
- **HyDE(假设文档嵌入)**:先生成一个假设回答,再用该回答作为查询向量去检索,提高召回相关性。
- **动态重排**:使用交叉编码器(Cross-Encoder)对初步召回结果进行排序,过滤掉不相关的片段。
### 3. Prompt 工程实践
#### 结构化输入设计
基于角色和场景进行约束。例如:
**场景**:法律合同条款咨询
**系统Prompt示例**:
```
你是一位资深法律顾问,专门处理合同纠纷。用户的问题涉及《民法典》第580条。
请按以下步骤回答:
1. 检索相关法律条文和判例。
2. 分析用户问题中的关键事实。
3. 分点解释法律适用,并标注引用来源(条款编号、案例编号)。
4. 最终给出清晰的法律建议。
```
#### 输出模板控制
通过预设模板化输出框架确保格式规范,并设置动态防护栏机制过滤敏感词与校验事实一致性,实现内容生成的安全性与合规性。
**示例模板**(用于产品说明书问答):
```
## 问题:{用户问题}
## 依据知识:
{检索到的知识片段}
## 回答:
1. {要点1}
2. {要点2}
## 引用来源:
{来源文档名称、页码}
```
> **小提示**:在Prompt中明确要求模型“仅基于检索内容回答,不要自行发挥”,可以有效减少幻觉。
---
## 五、常见问题与解答
**Q1:RAG和微调有什么区别?**
- 微调:让模型记住新知识,适用于固定规则或高频使用的知识,但更新成本高。
- RAG:通过检索动态注入知识,适用于知识频繁更新的场景,无需重新训练模型。
**Q2:如何选择向量化模型?**
- 中文场景:推荐 `BAAI/bge-large-zh-v1.5` 或 `shibing624/text2vec-base-chinese`。
- 英文场景:`all-MiniLM-L6-v2` 轻量高效,`text-embedding-ada-002`(OpenAI)效果更佳。
- 句向量模型:`sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2` 支持多语言。
**Q3:检索结果太多或太少怎么办?**
- 太多:增加 `top_k` 阈值(例如从5降到3),或使用重排模型筛选。
- 太少:降低相似度分数阈值,或扩大分块重叠量,或关联知识图谱扩展查询。
**Q4:RAG能否处理多模态数据(图片、表格)?**
- 可以。先将图片/表格分别用视觉模型(如CLIP)或表格解析工具转为文本描述,再作为普通文本块存入向量库;或者使用多模态向量数据库(如Wea viate)直接存储向量。
---
通过以上对RAG技术原理、知识库与知识图谱构建方法、以及Prompt工程实战的拆解,相信你已经掌握了让大模型突破知识边界的关键技能。无论是在智能客服、文档问答还是企业知识管理中,RAG都能为你的应用注入精准、实时、可解释的生成能力。
热点追踪提示词
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:一文搞懂大模型RAG知识库与知识图谱要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点AI热点2026-07-14 19:48
面壁智能CTO谈端侧AI:从打字机到大模型的进化突围
面壁智能聚焦端侧AI,不拼参数大小,而是通过知识密度提升与模型风洞技术,将大模型压缩至手机、汽车等设备。其MiniCPM以2B参数超越同期8B对手。CTO曾国洋22岁主导训练中国首个大语言模型CPM-1。端侧AI追求“默契系统”,在用户开口前预判需求,已在吉利、上汽大众等车型落地应用。
AI热点2026-07-14 19:48
印度IT巨头HCL Tech投350亿卢比建50MW AI数据中心
印度IT巨头HCLTech投资最高350亿卢比建设AI数据中心,容量可扩展至50MW,提供从设计到运营的端到端服务,旨在满足政府及企业日益增长的算力需求,抢占印度快速增长的数据中心市场,并推动AI基础设施布局。
AI热点2026-07-14 19:48
小米具身智能机器人新工站双侧螺母上件成功率达98%
小米具身机器人在汽车工厂自攻螺母上件工站实现双侧作业成功率98%,接近人工水平。同时在新工站分别达到90%成功率,从单一操作拓展至多工站协同,验证了具身智能在复杂工业环境的落地能力。
AI热点2026-07-14 19:48
DeepSeek梁文锋身价360亿美元成AI新首富
全球AI行业正迎来新的财富格局,DeepSeek创始人梁文锋凭借其公司的迅猛发展,个人财富急剧膨胀,一举超越多位硅谷知名人物,成为全球AI公司领域的新首富。以下将详细解析其身价飙升背后的关键因素及公司发展历程。 一、身价飙升至360亿美元,超越多位AI大佬 根据最新彭博亿万富豪指数,DeepSeek
- 日榜
- 周榜
- 月榜
热点快看
