在线咨询 400-826-1668
回到顶部
ARTICLE DETAIL

资讯详情

深耕国风建站与运营引流的一线实战洞察。

从RAG 到KAG

从RAG 到KAG 1. 引言大模型幻觉与知识增强之路近年来大语言模型LLM以惊人的能力席卷了自然语言处理领域从对话生成到代码编写从文本摘要到复杂推理其表现令人印象深刻。然而大模型存在一个根本性的缺陷——幻觉问题。当模型被询问到超出其训练数据覆盖范围、需要实时信息或专业知识的问题时它往往会生成看似合理但实际错误、甚至完全虚构的内容。这种幻觉在医疗、法律、金融等对准确性要求极高的领域尤其危险。为了解决这一问题研究者们提出了检索增强生成Retrieval-Augmented GenerationRAG技术。RAG 的核心思想是在生成回答之前先从外部知识库中检索相关信息然后将这些信息作为上下文提供给大模型从而约束生成结果减少幻觉。RAG 让大模型能够“外挂”知识既保持了模型的泛化能力又提升了回答的时效性和准确性。但是RAG 并非万能。传统的 RAG 系统主要依赖非结构化文本的向量检索在面对复杂的多跳推理、实体关系密集的查询时往往力不从心。因为这些查询需要的不是简单的段落匹配而是对知识结构的深度理解和推理。于是知识增强生成Knowledge-Augmented GenerationKAG应运而生。KAG 将结构化知识如知识图谱引入生成流程利用实体、关系、属性等显式知识来增强生成质量弥补了纯文本检索的不足。本文将从零开始深入剖析 RAG 和 KAG 的技术原理、发展脉络、核心挑战、实现方案以及未来趋势并辅以丰富的代码示例帮助读者全面掌握这两种知识增强技术篇幅约2万字适合对 AI 应用开发感兴趣的技术人员阅读。2. RAG 基础定义与核心架构2.1 什么是 RAG检索增强生成RAG是一种将信息检索与文本生成相结合的框架。它由两部分组成检索器Retriever和生成器Generator。检索器负责从外部知识库如文档集合、网页、数据库中查找与用户查询相关的信息生成器通常是一个大语言模型则将这些检索到的信息作为上下文结合原始查询生成最终的答案。RAG 的基本流程可以概括为用户查询用户提出一个问题或请求。查询编码将查询文本转换为向量表示用于检索。相似度检索在预先构建好的向量索引中搜索与查询向量最相似的文档片段。上下文组装将检索到的 top-k 文档片段拼接成一段上下文文本。提示构建将用户查询和检索到的上下文组合成一个提示prompt通常包含指令和上下文示例。生成回答大模型基于提示生成最终答案。RAG 的灵活性在于知识库可以动态更新无需重新训练模型从而实现了知识的实时注入。这使得 RAG 成为构建领域问答系统、智能客服、知识库搜索等应用的首选方案。2.2 RAG 的核心组件一个典型的 RAG 系统包含以下几个关键组件文档加载器负责从各种数据源PDF、网页、数据库、CSV 等加载原始文档。文本分割器将长文档切分成适当大小的块chunk以便于检索和模型处理。常用的分割策略有按固定长度、按句子、按段落、按语义边界等。嵌入模型将文本块转换为向量表示embedding。常用的嵌入模型有 OpenAI 的 text-embedding-ada-002、BGE、M3E 等。向量数据库存储文本块的向量及其元数据并提供高效的近似最近邻搜索ANN。常见的有 Pinecone、Weaviate、Chroma、Milvus、FAISS 等。检索器接收用户查询利用嵌入模型生成查询向量然后在向量数据库中搜索最相似的文本块。生成器大语言模型如 GPT-4、Llama 3、ChatGLM 等负责根据上下文生成答案。后处理模块可选对检索结果进行重排序、过滤、融合等操作以提高最终上下文的质量。2.3 一个简单的 RAG 实现下面我们使用 LangChain 框架和 OpenAI 嵌入模型演示一个最基础的 RAG 流程。假设我们有一组文档需要搭建一个问答系统。from langchain_community.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_openai import OpenAIEmbeddings from langchain_community.vectorstores import Chroma from langchain_openai import ChatOpenAI from langchain.chains import RetrievalQA 1. 加载文档 loader TextLoader(knowledge_base.txt) documents loader.load() 2. 文本分割 text_splitter RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap50) texts text_splitter.split_documents(documents) 3. 生成嵌入并存储到向量数据库 embeddings OpenAIEmbeddings() vectorstore Chroma.from_documents(texts, embeddings) 4. 构建检索器 retriever vectorstore.as_retriever(search_kwargs{k: 3}) 5. 创建问答链 llm ChatOpenAI(modelgpt-3.5-turbo, temperature0) qa_chain RetrievalQA.from_chain_type(llmllm, retrieverretriever) 6. 提问 query 什么是RAG answer qa_chain.run(query) print(answer)以上代码展示了 RAG 的基本骨架。在实际应用中我们还需要考虑文档解析、分块策略优化、检索参数调优等细节。3. RAG 发展历程从朴素到高级3.1 朴素 RAGNaive RAG最初的 RAG 实现非常简单文档切片 → 嵌入 → 向量检索 → 拼接上下文 → 生成。这种朴素 RAG 存在几个明显的问题检索质量低依赖单一的向量相似度难以捕捉精确匹配和长尾查询。上下文碎片化由于分块操作检索到的片段可能丢失了原始文档的逻辑结构导致上下文不连贯。一次性检索无法进行多轮交互式检索难以处理需要多步推理的复杂查询。幻觉依然存在如果检索到的信息不相关或不充分模型仍会生成错误答案。3.2 高级 RAGAdvanced RAG为了克服朴素 RAG 的不足学术界和工业界提出了一系列改进方案统称为高级 RAG。这些改进主要集中在检索前、检索中和检索后三个阶段。3.2.1 检索前优化查询改写使用 LLM 对原始查询进行改写生成多个不同表述的子查询或者将模糊查询具体化以提高检索召回率。查询扩展通过同义词、相关词等扩展查询增加检索覆盖面。HyDE假设文档嵌入先让 LLM 生成一个假设性答案再用该假设答案的嵌入去检索而不是直接用原始查询。这种方法在某些场景下能显著提升召回。3.2.2 检索策略增强多路召回同时使用稀疏检索如 BM25和稠密检索向量相似度将两者的结果合并取长补短。自查询检索让 LLM 从查询中提取元数据过滤器如日期、作者、类别与向量检索结合实现更精准的筛选。层次化检索先检索文档摘要或大纲再深入到具体块通过树状结构提升检索效率。3.2.3 检索后处理重排序使用更强大的跨编码器模型对初步检索结果进行重新打分排序保留最相关的块。上下文压缩去除检索块中的冗余信息提取关键句子避免上下文过长超出模型窗口。融合将多个检索结果按重要性融合成一个连贯的上下文减少重复和矛盾。3.3 Agentic RAG随着 AI Agent 的发展RAG 系统也具备了动态决策能力。Agentic RAG 将检索过程建模为多步推理Agent 可以根据当前状态决定是否需要检索、检索什么、如何检索甚至调用外部工具如计算器、API。这种模式极大增强了 RAG 处理复杂任务的能力例如多跳问答、数据分析和报告生成。例如LangChain 的 Agent 模块可以结合检索工具让模型在对话中自主决定何时检索知识库from langchain.agents import initialize_agent, Tool from langchain.agents import AgentType tools [ Tool( nameKnowledge Base, funcretriever.get_relevant_documents, description用于查询公司内部文档 ) ] agent initialize_agent(tools, llm, agentAgentType.ZERO_SHOT_REACT_DESCRIPTION, verboseTrue) agent.run(我们公司最新的休假政策是什么)4. RAG 技术细节深度剖析4.1 文档分块策略分块是 RAG 中至关重要的一步。块的大小和重叠量直接影响检索效果和上下文质量。常用的分块策略有固定大小分块按字符数或 token 数切分。简单直接但容易切断句子或段落丢失语义。递归字符分割先按段落、再按句子、最后按字符逐层尝试分割尽可能保持语义完整性。语义分块利用嵌入模型计算相邻句子的相似度当相似度低于阈值时进行切分。这种方法能更好地保持语义连贯性。文档结构分块对于 Markdown、HTML 等有明确结构的文档根据标题层级进行分块每个块对应一个逻辑节。一个经验法则是块的大小应控制在 256-1024 tokens 之间重叠量通常为块大小的 10%-20%。较小的块检索精度高但可能丢失上下文较大的块包含更多信息但可能引入噪声。4.2 嵌入模型选择嵌入模型将文本映射到高维向量空间语义相似的文本在空间中距离较近。选择嵌入模型时需考虑模型维度维度越高表示能力越强但存储和计算成本也越高。最大输入长度确保模型支持你要处理的块大小。领域适配通用嵌入模型可能在某些垂直领域如医疗、法律表现不佳可考虑使用领域微调模型。双语能力对于中文场景需要选择支持中文的模型如 BGE-large-zh、M3E-base 等。常见的嵌入模型对比模型维度最大长度语言特点text-embedding-ada-00215368191 tokens多语言OpenAI性能均衡BGE-large-zh1024512 tokens中文中文领域 SOTAM3E-base768512 tokens中英开源轻量Cohere Embed v31024512 tokens多语言支持压缩4.3 向量数据库选型向量数据库是 RAG 的存储核心。选型时需考量部署方式自托管Milvus、Weaviate vs 云服务Pinecone。索引算法HNSW、IVF、PQ 等影响查询速度和精度。过滤能力是否支持标量过滤和混合搜索。扩展性能否处理十亿级向量。对于中小规模应用Chroma 和 FAISS 是简单易用的选择大规模生产环境则推荐 Milvus 或 Pinecone。4.4 上下文窗口管理大模型的上下文窗口有限早期 GPT-3.5 仅支持 4K tokens现在 GPT-4 Turbo 可达 128K但成本依然高昂。因此如何高效利用有限的上下文窗口至关重要。常用策略包括Top-k 截断只取最相关的 k 个块。相关性阈值过滤掉相似度低于阈值的块。上下文压缩使用小模型对检索块进行摘要保留关键信息。动态窗口根据查询复杂度动态调整 k 值。提示词缓存重复利用系统提示节省 token。5. RAG 面临的挑战与局限性尽管 RAG 取得了显著成效但在实际应用中仍面临诸多挑战检索质量瓶颈向量检索本质上是一种浅层语义匹配难以处理需要精确匹配、逻辑推理或多实体关联的查询。例如“王芳的母亲是谁”这种问题如果文档中只有“王芳”和“李华是王芳的母亲”两条信息但两者不在同一个块中检索可能无法召回完整信息。生成幻觉即使提供了相关上下文大模型有时仍会忽略或曲解上下文生成与事实不符的答案。尤其在长上下文中模型可能只关注开头和结尾忽视中间部分Lost in the Middle 现象。知识更新延迟虽然向量数据库可以动态更新但嵌入模型本身的训练数据可能过时导致向量表示无法准确反映新概念。多跳推理困难对于需要多步推理的问题一次检索往往无法获取全部所需信息需要多次检索和推理但大多数 RAG 系统缺乏这种机制。非结构化数据的局限纯文本无法表达实体间的关系、事件的时间线、因果链等结构化信息而这些信息对于精确回答至关重要。正是这些局限催生了知识增强生成KAG——一种将结构化知识融入生成过程的新范式。6. KAG 概念知识增强生成登场6.1 什么是 KAG知识增强生成KAG是一种将知识图谱Knowledge GraphKG等结构化知识源与大型语言模型相结合的生成框架。与 RAG 依赖非结构化文本不同KAG 利用实体、关系、属性等显式知识通过图查询、推理等方式获取精确信息进而增强生成质量。知识图谱是一种以图结构表示知识的方式节点代表实体如人名、地名、概念边代表实体间的关系如“出生于”、“任职于”。例如在知识图谱中“爱因斯坦”节点通过“提出”关系连接到“相对论”节点。这种显式表示使得计算机能够进行精确的推理和查询。KAG 的核心思想是在生成回答时先利用知识图谱进行结构化查询获取与问题相关的事实、关系或路径然后将这些结构化知识转换为自然语言作为上下文提供给大模型从而生成更准确、更具解释性的回答。6.2 KAG 与 RAG 的核心区别维度RAGKAG知识形式非结构化文本片段结构化知识实体、关系、属性检索方式向量相似度搜索图查询SPARQL、Cypher、图遍历、图嵌入推理能力弱依赖模型推断强通过图结构进行多跳推理答案精确性可能产生幻觉高基于精确事实查询知识更新更新文档重新嵌入更新图节点/边实时生效典型应用开放域问答、文档搜索医疗诊断、金融分析、法律咨询简单来说RAG 擅长处理开放域、模糊的查询而 KAG 在需要精确事实、多跳推理和深度分析的领域表现出色。两者并非互斥完全可以结合使用。7. KAG 核心架构详解一个典型的 KAG 系统由以下几个模块构成知识图谱构建从结构化数据数据库或非结构化文本中抽取实体、关系构建知识图谱。图存储与查询引擎使用图数据库如 Neo4j、JanusGraph存储图谱并提供图查询语言Cypher、SPARQL进行检索。图增强生成将图查询结果转换为自然语言上下文送入大模型生成答案。推理与融合结合图推理如路径排序、规则推理和多源信息融合提升回答质量。7.1 知识图谱构建流程构建知识图谱通常包括以下步骤数据收集从各种数据源获取原始数据包括结构化表格、半结构化 JSON、非结构化文本等。实体识别使用命名实体识别NER技术从文本中抽取实体。关系抽取识别实体之间的关系可以使用预训练关系抽取模型或基于规则的方法。实体消歧与链接将抽取的实体链接到知识图谱中已有的实体避免重复。知识融合合并来自不同数据源的相同实体和关系解决冲突。图存储将实体和关系加载到图数据库。7.2 图查询与检索在 KAG 中针对用户查询系统需要将其转换为图查询语言。这通常通过以下方式实现模板匹配预定义常见问题的查询模板通过意图识别选择模板。NL2Cypher使用大模型将自然语言问题直接转换为 Cypher 查询语句。例如对于问题“张三认识哪些人”LLM 可以生成MATCH (p:Person {name: 张三})-[:KNOWS]-(friend) RETURN friend.name。图嵌入检索将查询和节点/关系嵌入到同一向量空间通过向量相似度找到相关子图。下面是一个使用 NL2Cypher 的 Python 示例借助 LangChain 的 GraphCypherQAChainfrom langchain_community.graphs import Neo4jGraph from langchain.chains import GraphCypherQAChain from langchain_openai import ChatOpenAI graph Neo4jGraph( urlbolt://localhost:7687, usernameneo4j, passwordpassword ) llm ChatOpenAI(modelgpt-4, temperature0) chain GraphCypherQAChain.from_llm(llm, graphgraph, verboseTrue) question 张三有哪些同事 answer chain.run(question) print(answer)7.3 图推理增强除了直接查询知识图谱还支持复杂的推理如多跳推理沿着关系路径查找答案。例如“张三的母亲的哥哥是谁”需要先找到张三的母亲再找到母亲的兄弟。规则推理利用预定义的规则如“如果 A 是 B 的父亲B 是 C 的父亲则 A 是 C 的祖父”推导新知识。图神经网络使用 GNN 对图结构进行编码用于节点分类、链接预测等任务辅助生成。8. 知识图谱构建实战从零搭建一个领域知识图谱本节我们以医疗领域为例演示如何从医学文献中构建一个简单的知识图谱并用于问答。8.1 环境准备我们需要安装以下库spacyNER、transformers关系抽取、neo4j图数据库驱动、langchain等。8.2 实体识别与关系抽取假设我们有一段医学文本“阿司匹林是一种非甾体抗炎药常用于治疗发热和疼痛。它的主要副作用包括胃肠道出血。”我们可以使用预训练模型进行实体识别或者使用简单的规则匹配。import spacy nlp spacy.load(en_core_web_sm) # 英文模型中文需使用 zh_core_web_sm text Aspirin is a nonsteroidal anti-inflammatory drug used to treat fever and pain. Its main side effect includes gastrointestinal bleeding. doc nlp(text) for ent in doc.ents: print(ent.text, ent.label_)对于关系抽取我们可以使用基于标注数据微调的模型或者利用大模型进行零样本关系抽取。这里展示一个简化版from transformers import pipeline relation_extractor pipeline(text-classification, modelsome-relation-extraction-model) 对于大模型可以使用 prompt 方式 示例输入 Aspirin treats fever. 期望输出 treats 关系8.3 构建 Neo4j 图将抽取的实体和关系导入 Neo4jfrom neo4j import GraphDatabase driver GraphDatabase.driver(bolt://localhost:7687, auth(neo4j, password)) def create_entity(tx, name, label): tx.run(MERGE (e: label {name: $name}), namename) def create_relation(tx, entity1, rel, entity2): tx.run(MATCH (a {name: $name1}), (b {name: $name2}) MERGE (a)-[r: rel ]-(b), name1entity1, name2entity2) with driver.session() as session: session.execute_write(create_entity, Aspirin, Drug) session.execute_write(create_entity, Fever, Disease) session.execute_write(create_entity, Gastrointestinal bleeding, SideEffect) session.execute_write(create_relation, Aspirin, TREATS, Fever) session.execute_write(create_relation, Aspirin, HAS_SIDE_EFFECT, Gastrointestinal bleeding)8.4 使用知识图谱进行问答构建完成后即可通过 NL2Cypher 进行问答from langchain.chains import GraphCypherQAChain from langchain_community.graphs import Neo4jGraph graph Neo4jGraph(urlbolt://localhost:7687, usernameneo4j, passwordpassword) chain GraphCypherQAChain.from_llm(ChatOpenAI(modelgpt-4, temperature0), graphgraph) answer chain.run(What are the side effects of Aspirin?) print(answer) # 输出Aspirin may cause gastrointestinal bleeding.9. KAG 的高级技术图嵌入与图神经网络随着图数据的增大基于精确查询的检索可能面临效率问题同时知识图谱可能不完整需要链接预测来补全。图嵌入和图神经网络GNN为此提供了强大的工具。9.1 图嵌入图嵌入将图中的节点和边映射到低维向量空间同时保留图的结构和语义信息。常见的图嵌入方法有 TransE、DistMult、ComplEx、RotatE 等。这些方法基于三元组头实体关系尾实体进行训练使得头实体向量 关系向量 ≈ 尾实体向量。利用图嵌入我们可以将查询涉及的实体和关系向量化通过向量相似度找到相关子图或节点从而实现软性检索弥补精确查询的不足。9.2 图神经网络GNN 可以直接对图结构数据进行学习用于节点分类、链接预测、图分类等任务。在 KAG 中GNN 可以用于知识图谱补全预测缺失的实体或关系扩展图谱。实体重要性评估识别关键实体辅助上下文选择。子图提取根据查询自动抽取出最相关的子图作为上下文。例如使用 GraphSAGE 或 GAT 对节点进行编码然后与 LLM 的嵌入结合进行多模态融合提升生成质量。10. RAG 与 KAG 的对比分析从多个维度深入对比 RAG 和 KAG10.1 适用场景RAG 擅长开放域问答、文档搜索、客服知识库、长尾问题解答。当知识以非结构化文本为主且查询多为简单事实或概念解释时RAG 成本低、见效快。KAG 擅长医疗诊断、金融风控、法律推理、供应链分析等需要精确关系推理和复杂分析的场景。当知识具有强结构性和关联性时KAG 能提供更可靠的答案。10.2 构建成本RAG构建成本相对较低。只需收集文档、进行分块和嵌入向量数据库的开箱即用性高。更新成本也低只需重新嵌入新文档。KAG构建成本高。需要大量的人工或半自动化的知识抽取工作知识图谱的构建和维护需要专业知识和工具。图数据库的管理和查询优化也较为复杂。10.3 可解释性RAG可以展示检索到的文档片段作为答案来源但片段可能不完整解释性有限。KAG天然可解释。可以展示查询路径、实体关系图甚至推理过程在需要审计和合规的领域具有优势。10.4 性能与延迟RAG向量检索通常很快毫秒级但大模型生成可能耗时。KAG图查询根据图规模和查询复杂度可能比向量检索慢但可以优化索引。NL2Cypher 的生成也需要时间。10.5 互补性RAG 和 KAG 并非对立而是互补。在实际系统中我们可以将 RAG 作为召回层KAG 作为精排和推理层。例如先用 RAG 检索相关文档再从文档中抽取实体关系临时构建一个小型知识图谱进行推理或者将知识图谱中的结构化描述作为文本块与普通文档一起存入向量数据库实现混合检索。11. RAG 与 KAG 的混合方案如何结合 RAG 和 KAG 的优势以下介绍几种常见的混合架构。11.1 图辅助 RAG在 RAG 流程中引入知识图谱作为辅助信息源。当用户查询中包含明确实体时先查询知识图谱获取该实体的相关属性或关系然后将这些结构化信息作为上下文的一部分与检索到的文本块合并一起送入大模型。这样既利用了文本的丰富性又获得了结构化知识的精确性。例如在电影问答中对于“《盗梦空间》的导演是谁”这个问题我们可以直接从知识图谱中获取导演信息同时从文本知识库中检索关于该电影的影评生成更全面的回答。实现方式Agent 先判断查询是否涉及已知实体若是则调用图查询工具否则走常规 RAG 流程。11.2 文本驱动的知识图谱增强利用非结构化文本动态补全或扩展知识图谱。当用户的查询无法在现有图谱中找到答案时系统可以启动 RAG 流从文本库中检索相关信息然后使用信息抽取技术从检索到的文本中提取实体和关系临时添加到知识图谱中再进行推理。这种方法称为“即时知识图谱”On-the-fly KG。比如对于一个新兴领域的查询知识图谱中可能尚未收录相关实体RAG 可以从最新论文中检索信息抽取实体关系构建临时子图从而回答查询。11.3 统一嵌入空间将文本块和知识图谱中的实体/关系嵌入到同一个向量空间实现统一的检索。可以训练一个多模态嵌入模型将文本和知识图谱三元组映射到同一空间然后通过向量相似度同时检索文本和知识最后将结果融合。这种方法要求较高的技术复杂度但能实现无缝的混合检索。11.4 混合查询引擎设计一个查询路由器根据查询类型自动选择检索策略。查询类型可以是事实型查询直接走知识图谱精确查询。解释型查询走 RAG 检索相关文档结合知识图谱提供背景。推理型查询先在图谱中推理若失败则回退到 RAG 并尝试动态构建图谱。这种架构类似于“检索增强生成路由器”能够根据查询复杂度自适应调整实现最优性能。12. 实践案例搭建一个混合 RAGKAG 的企业知识问答系统本节我们将设计一个简单的企业知识问答系统结合 RAG 和 KAG。假设企业有一批内部文档产品手册、流程规范和一个已构建的组织架构知识图谱部门、员工、职责关系。12.1 系统架构前端用户输入查询。查询分析器使用 LLM 分析查询意图提取实体和查询类型。知识图谱引擎如果查询涉及组织架构、人员关系调用 Neo4j 进行图查询。文档检索器如果查询涉及产品细节、流程步骤调用 Chroma 进行向量检索。融合器将图查询结果和文档检索结果融合成上下文。生成器LLM 生成最终答案。12.2 代码实现import os from langchain_openai import ChatOpenAI, OpenAIEmbeddings from langchain_community.vectorstores import Chroma from langchain_community.graphs import Neo4jGraph from langchain.chains import GraphCypherQAChain, RetrievalQA from langchain.agents import Tool, AgentExecutor, initialize_agent from langchain.agents import AgentType 初始化 llm ChatOpenAI(modelgpt-4, temperature0) embeddings OpenAIEmbeddings() vectorstore Chroma(persist_directory./chroma_db, embedding_functionembeddings) retriever vectorstore.as_retriever() graph Neo4jGraph(urlbolt://localhost:7687, usernameneo4j, passwordpassword) 定义工具 def query_graph(question): chain GraphCypherQAChain.from_llm(llm, graphgraph) return chain.run(question) def query_docs(question): qa RetrievalQA.from_chain_type(llmllm, retrieverretriever) return qa.run(question) tools [ Tool( nameOrganizational KG, funcquery_graph, description用于查询组织架构、员工关系、部门职责等结构化信息。 ), Tool( nameDocument Search, funcquery_docs, description用于查询产品手册、流程规范、技术文档等非结构化信息。 ) ] 初始化 Agent agent initialize_agent( tools, llm, agentAgentType.ZERO_SHOT_REACT_DESCRIPTION, verboseTrue ) 测试 query 张三所在的部门负责哪些产品 answer agent.run(query) print(answer) 系统会先查询组织架构图谱找到张三的部门再查询文档搜索该部门负责的产品这个 Agent 会自动根据查询内容选择合适的工具甚至可能组合使用两个工具实现混合检索增强。12.3 效果评估在实际应用中我们需要对系统进行评测指标包括答案准确性、召回率、响应时间、用户满意度等。对于知识图谱部分还需要评估实体链接的准确性和关系抽取的完整性。可以采用人工标注的测试集或者使用 LLM 作为评判者进行自动评估。13. 未来展望从 RAG 到 KAG 再到自主知识引擎随着大模型和知识工程的发展知识增强生成技术正朝着更智能、更自主的方向演进。以下是几个值得关注的趋势13.1 知识图谱的自动化构建当前构建知识图谱仍然需要大量人工介入但大模型的出现使得自动化构建成为可能。利用 LLM 强大的信息抽取能力可以从海量文本中自动发现实体、关系甚至规则。未来我们可能看到“自学习知识图谱”能够持续从新的数据中学习并更新自身实现知识的自我进化。13.2 多模态知识增强现实世界的信息不仅限于文本还包括图像、视频、音频等。多模态知识图谱将实体、关系与视觉、听觉信息关联为多模态生成提供基础。例如结合产品图片和说明文档回答关于产品外观和功能的问题。13.3 神经符号推理神经符号推理Neuro-Symbolic Reasoning结合了神经网络的感知能力和符号系统的推理能力。在 KAG 中神经符号方法可以用于处理不确定性和模糊性同时保持逻辑的严谨性。例如使用概率图模型进行推理用大模型处理自然语言理解两者协同工作。13.4 个性化知识增强未来的知识增强系统将更具个性化根据用户的历史行为、偏好和知识水平动态调整检索策略和生成风格。个人知识图谱将记录用户的知识背景和兴趣实现“千人千面”的知识增强。13.5 自主知识引擎最终RAG 和 KAG 将融合为“自主知识引擎”它能够主动发现知识缺口并自主搜索、学习新知识。根据任务需求动态构建临时的知识图谱。进行多步推理和规划解决复杂问题。与人类协作通过对话不断完善知识库。这种自主知识引擎将成为未来 AI 的核心基础设施推动智能助手、科研发现、决策支持等领域的革命。14. 总结本文从 RAG 的基础概念出发深入探讨了 RAG 的发展历程、技术细节、挑战进而引出 KAG 的概念、架构和实现。我们对比了 RAG 和 KAG 的优劣并提出了混合方案最后给出了一个实践案例。随着技术的不断进步RAG 和 KAG 正逐渐融合形成更强大的知识增强生成体系为大模型赋予真正的“知识大脑”。对于开发者而言掌握 RAG 和 KAG 不仅是技术进阶的需要更是构建下一代智能应用的必经之路。希望本文能够为你提供全面的知识地图助你在 AI 应用开发中乘风破浪。
返回列表