第14章:知识检索(RAG)Knowledge Retrieval (RAG)

大型语言模型(LLMs)展现了生成类人文本的显著能力。然而,它们的知识库通常局限于训练时使用的数据,这限制了它们获取实时信息、特定公司数据或高度专业化细节的能力。知识检索(RAG,即检索增强生成)解决了这一局限性。RAG使LLMs能够访问并整合外部、实时和上下文相关的信息,从而提高其输出的准确性、相关性和事实依据。

对于AI智能体来说,这项功能至关重要,因为它使智能体能够基于实时、可验证的数据来制定行动和回应,而不仅仅依赖静态训练数据。这种能力使其能够准确地执行复杂任务,例如访问最新的公司政策以回答特定问题,或在下订单前检查当前库存。通过整合外部知识,RAG将智能体从简单的对话工具转变为高效的数据驱动工具,能够执行有意义的工作。

知识检索(RAG)模式概述

知识检索(RAG)模式通过在生成响应前为LLMs提供外部知识库的访问权限,显著提升了其能力。与仅依赖内部预训练知识不同,RAG允许LLMs“查阅”信息,就像人类可能会查阅书籍或搜索互联网一样。此过程使LLMs能够提供更准确、最新且可验证的答案。

当用户向使用RAG的人工智能系统提出问题或给出提示时,查询不会直接发送到LLM。相反,系统会首先在一个庞大的外部知识库中——一个高度组织化的文档、数据库或网页库——搜索相关信息。这种搜索并非简单的关键词匹配,而是基于“语义搜索”,能够理解用户意图及其语言背后的含义。初步搜索会提取出最相关的片段或“信息块”。这些提取出的内容随后会被“增强”或添加到原始提示中,形成一个更丰富、更具信息量的查询。最后,这个增强后的提示会被发送到LLM。在额外上下文的支持下,LLM能够生成不仅流畅自然且基于检索数据的事实性响应。

RAG框架提供了几个显著的优势。它使LLMs能够访问最新信息,从而克服其静态训练数据的限制。这种方法还减少了“幻觉”——即生成虚假信息的风险——通过基于可验证数据来生成响应。此外,LLMs可以利用内部公司文档或维基中的专业知识。这一过程的一个重要优势是能够提供“引用”,明确指出信息的具体来源,从而增强人工智能响应的可信度和可验证性。

为了全面理解RAG的运作,有必要了解几个核心概念(见图1):

嵌入(Embeddings):在LLMs的上下文中,嵌入是文本(如单词、短语或完整文档)的数值表示。这些表示以向量的形式存在,即一组数字。核心思想是以数学空间捕捉文本的语义意义及其之间的关系。具有相似含义的单词或短语在这个向量空间中会更接近。例如,想象一个简单的二维图表。“cat”这个词可能用坐标(2, 3)表示,而“kitten”则非常接近,可能是(2.1, 3.1)。相比之下,“car”这个词可能有一个远离的坐标,例如(8, 1),反映了其不同的含义。实际上,这些嵌入存在于一个维度数高达几百甚至几千的空间中,从而实现对语言的非常细致的理解。

文本相似性

文本相似性是衡量两段文本相似程度的一种方法。这可以是表面层次的,比如考察单词的重叠(词汇相似性),也可以是更深层次的基于意义的比较。在 RAG(Retrieval-Augmented Generation)中,文本相似性对于在知识库中找到与用户查询最相关的信息至关重要。例如,考虑以下两个句子:“What is the capital of France?” 和 “Which city is the capital of France?”。虽然措辞不同,但它们都在询问同一个问题。一个优秀的文本相似性模型能够识别这一点,并为这两个句子分配较高的相似性分数,即使它们仅共享少量单词。这通常是通过计算文本的嵌入向量来实现的。

语义相似性与语义距离

语义相似性是文本相似性的更高级形式,它专注于文本的意义和上下文,而不仅仅是使用的单词。其目标是理解两段文本是否传达了相同的概念或思想。语义距离则是其反面;高语义相似性意味着低语义距离,反之亦然。在 RAG 中,语义搜索依赖于找到与用户查询语义距离最小的文档。例如,“a furry feline companion”(一个毛茸茸的猫科动物伴侣)和 “a domestic cat”(一只家养的猫)除了“a”这个单词外没有其他共同词汇。然而,一个能够理解语义相似性的模型会识别它们指的是同一事物,并认为它们高度相似。这是因为它们的嵌入向量在向量空间中非常接近,表明语义距离很小。这种“智能搜索”使得 RAG 即使在用户的措辞与知识库中的文本不完全匹配时,也能找到相关信息。

图 1:RAG 核心概念:文档分块、嵌入和向量数据库

文档分块

文档分块是将大型文档分解为较小、更易于管理的部分或“块”的过程。为了让 RAG 系统高效工作,它无法将整个大型文档直接输入到大型语言模型(LLM)中,而是处理这些较小的块。文档的分块方式对于保留信息的上下文和意义非常重要。例如,与其将一本 50 页的用户手册视为一个整体文本块,不如采用分块策略将其分解为章节、段落甚至句子。例如,“故障排除”部分可以作为一个独立的块,与“安装指南”分开。当用户询问某个具体问题时,RAG 系统可以检索最相关的故障排除块,而不是整个手册。这使得检索过程更快,同时提供给 LLM 的信息更加专注且与用户的即时需求相关。

在文档分块后,RAG 系统必须采用检索技术来找到与给定查询最相关的块。主要方法是向量搜索,它利用嵌入和语义距离来找到与用户问题概念上相似的块。一种较早但仍有价值的技术是 BM25,这是一种基于关键词的算法,通过词频对块进行排名,而不理解语义意义。为了兼顾两者的优势,通常会采用混合搜索方法,将 BM25 的关键词精确度与语义搜索的上下文理解相结合。这种融合方法能够实现更强大、更准确的检索,同时捕捉字面匹配和概念相关性。

向量数据库:

向量数据库是一种专门设计用于高效存储和查询嵌入的数据库类型。在文档被分块并转换为嵌入后,这些高维向量会存储在向量数据库中。传统的检索技术,例如基于关键词的搜索,虽然擅长查找包含查询中确切词汇的文档,但缺乏对语言的深层理解。例如,它无法识别“毛茸茸的猫科动物伙伴”实际上指的是“猫”。这正是向量数据库的优势所在。向量数据库专为语义搜索而构建,通过将文本存储为数值向量,它能够根据概念意义而非关键词重叠来查找结果。当用户的查询也被转换为向量时,数据库会使用高度优化的算法(如 HNSW - Hierarchical Navigable Small World)快速搜索数百万个向量,找到与查询“意义最接近”的结果。这种方法对于 RAG(检索增强生成)来说更为优越,因为即使用户的措辞与源文档完全不同,它也能发现相关的上下文。简而言之,其他技术搜索的是单词,而向量数据库搜索的是意义。这项技术以多种形式实现,包括托管数据库如 Pinecone 和 Weaviate,以及开源解决方案如 Chroma DB、Milvus 和 Qdrant。甚至现有的数据库也可以通过添加向量搜索功能进行增强,例如 Redis、Elasticsearch 和 Postgres(使用 pgvector 扩展)。这些系统的核心检索机制通常由 Meta AI 的 FAISS 或 Google Research 的 ScaNN 等库提供支持,这些库是这些系统高效运行的基础。

RAG 的挑战:

尽管 RAG 模式功能强大,但它并非没有挑战。一个主要问题在于,当回答查询所需的信息并非集中在单一分块中,而是分散在文档的多个部分甚至多个文档中时,检索器可能无法收集所有必要的上下文,从而导致答案不完整或不准确。系统的有效性还高度依赖于分块和检索过程的质量;如果检索到的分块不相关,可能会引入噪声并使大语言模型(LLM)产生混淆。此外,从可能存在矛盾的信息源中有效地综合信息仍然是这些系统面临的一大难题。除此之外,RAG 还需要将整个知识库预处理并存储在专门的数据库中,例如向量数据库或图数据库,这是一项相当大的工作。因此,这些知识需要定期更新以保持最新状态,这对于处理像公司维基这样不断变化的资源来说尤为重要。整个过程可能对性能产生显著影响,包括增加延迟、运营成本以及最终提示中使用的 token 数量。

总结:

检索增强生成(RAG)模式在使 AI 更加知识丰富和可靠方面代表了一次重要的飞跃。通过将外部知识检索步骤无缝集成到生成过程中,RAG 解决了单一 LLM 的一些核心局限性。嵌入和语义相似性的基础概念,结合关键词和混合搜索等检索技术,使系统能够智能地找到相关信息,并通过战略性分块使信息管理变得可行。整个检索过程由专门的向量数据库支持,这些数据库能够在大规模下高效存储和查询数百万个嵌入。尽管在检索分散或矛盾信息方面仍存在挑战,RAG 能够帮助 LLM 生成不仅具有上下文适用性且基于可验证事实的答案,从而增强了 AI 的可信度和实用性。

Graph RAG:

GraphRAG 是一种高级的检索增强生成(Retrieval-Augmented Generation)形式,它利用知识图谱而非简单的向量数据库进行信息检索。通过在结构化知识库中导航数据实体(节点)之间的显式关系(边),它能够回答复杂查询。其主要优势在于能够从分散在多个文档中的信息中综合答案,这正是传统 RAG 的常见缺陷。通过理解这些连接关系,GraphRAG 提供了更具上下文准确性和细腻度的响应。

应用场景包括复杂的金融分析、将公司与市场事件关联,以及科学研究中发现基因与疾病之间的关系。然而,其主要缺点在于构建和维护高质量知识图谱所需的显著复杂性、成本和专业知识。此外,该系统的灵活性较低,与简单的向量搜索系统相比可能引入更高的延迟。系统的有效性完全依赖于底层图谱结构的质量和完整性。因此,GraphRAG 在处理复杂问题时提供了卓越的上下文推理能力,但其实施和维护成本也显著更高。总而言之,它在深度、互联洞察比标准 RAG 的速度和简便性更为重要的场景中表现出色。

Agentic RAG:

这一模式的演进形式被称为 Agentic RAG(见图 2),它引入了一个推理和决策层,显著提升了信息提取的可靠性。与传统的检索和增强方式不同,Agentic RAG 中的“智能体”(agent)——一种专门的 AI 组件——充当知识的关键把关者和精炼者。智能体不会被动接受最初检索到的数据,而是主动审查其质量、相关性和完整性,如以下场景所示。

首先,智能体在反思和来源验证方面表现出色。例如,当用户询问“我们公司的远程办公政策是什么?”时,标准 RAG 可能会同时检索到一篇 2020 年的博客文章和官方的 2025 年政策文件。而智能体会分析文档的元数据,识别 2025 年政策为最新且权威的来源,并在传递正确的上下文给 LLM 之前,舍弃过时的博客文章。

图 2:Agentic RAG 引入了一个推理智能体,该智能体主动评估、协调和精炼检索到的信息,以确保最终响应更准确、更可信。

其次,智能体擅长解决知识冲突。例如,当一位财务分析师询问“Alpha 项目的第一季度预算是多少?”时,系统可能会检索到两份文件:一份初始提案显示预算为 €50,000,另一份最终财务报告显示预算为 €65,000。Agentic RAG 会识别出这一矛盾,优先选择财务报告作为更可靠的来源,并向 LLM 提供经过验证的数字,从而确保最终答案基于最准确的数据。

最后,智能体能够执行多步骤推理以综合复杂答案。例如,当用户询问“我们的产品功能和定价与竞争对手 X 的相比如何?”时,智能体会将问题分解为多个子查询。它会分别检索自身产品的功能、定价、竞争对手 X 的功能以及竞争对手 X 的定价。在收集到这些独立的信息后,智能体会将它们综合成一个结构化的对比上下文,再传递给 LLM,从而生成一个全面的响应,而简单的检索方式无法实现这样的结果。

第四,智能体可以识别知识空缺并使用外部工具。假设用户询问:“昨天我们新产品发布后市场的即时反应是什么?”智能体会搜索每周更新的内部知识库,但未找到相关信息。意识到这一知识空缺后,它可以激活一个工具,例如实时网络搜索 API,来查找最新的新闻文章和社交媒体情绪。然后,智能体利用这些新收集的外部信息提供最新的答案,从而克服静态内部数据库的局限性。

Agentic RAG 的挑战: 尽管功能强大,agentic 层也带来了自身的一些挑战。主要缺点是显著增加了复杂性和成本。设计、实施以及维护智能体的决策逻辑和工具集成需要大量的工程努力,同时增加了计算成本。这种复杂性还可能导致延迟增加,因为智能体的反思、工具使用以及多步骤推理循环比标准的直接检索过程耗时更多。此外,智能体本身也可能成为新的错误来源;有缺陷的推理过程可能导致其陷入无用的循环、误解任务或错误丢弃相关信息,从而最终降低最终响应的质量。

总结:

Agentic RAG 是标准检索模式的一种复杂演进,将其从被动的数据管道转变为主动的问题解决框架。通过嵌入一个能够评估来源、调和冲突、分解复杂问题并使用外部工具的推理层,智能体显著提升了生成答案的可靠性和深度。这一进步使得 AI 更加值得信赖和功能强大,但也带来了系统复杂性、延迟和成本方面的重要权衡,这些问题需要被谨慎管理。

实际应用与使用场景

知识检索(RAG)正在改变大型语言模型(LLMs)在各行业中的应用方式,增强了它们提供更准确和上下文相关响应的能力。

应用包括:

  • 企业搜索与问答: 企业可以开发内部聊天机器人,通过内部文档(如人力资源政策、技术手册和产品规格)回答员工的询问。RAG 系统从这些文档中提取相关部分,以支持 LLM 的响应。
  • 客户支持与服务台: 基于 RAG 的系统可以通过访问产品手册、常见问题解答(FAQs)和支持工单,为客户查询提供精准且一致的回答。这可以减少人工干预处理常规问题的需求。
  • 个性化内容推荐: 不再局限于简单的关键词匹配,RAG 可以识别并检索与用户偏好或先前交互语义相关的内容(文章、产品),从而提供更相关的推荐。
  • 新闻与时事摘要: LLM 可以与实时新闻源集成。当用户询问当前事件时,RAG 系统会检索最新文章,使 LLM 能够生成最新的摘要。

通过整合外部知识,RAG 将 LLM 的能力扩展到简单沟通之外,使其能够充当知识处理系统。

实操代码示例(ADK)

为了说明知识检索(RAG)模式,我们来看三个示例。

首先是如何使用 Google Search 执行 RAG,并将 LLM 与搜索结果进行关联。由于 RAG 涉及访问外部信息,Google Search 工具是一个内置检索机制的直接示例,可以增强 LLM 的知识。

from google.adk.tools import google_search
from google.adk.agents import Agent

search_agent = Agent(
    name="research_assistant",
    model="gemini-2.0-flash-exp",
    instruction="You help users research topics. When asked, use the Google Search tool",
    tools=[google_search]
)

其次,本节介绍如何在 Google ADK 中利用 Vertex AI RAG 功能。以下代码演示了如何从 ADK 初始化 VertexAiRagMemoryService。通过指定 RAG Corpus 资源名称以及可选参数(如 SIMILARITY_TOP_K 和 VECTOR_DISTANCE_THRESHOLD),可以配置服务。这些参数会影响检索过程,其中 SIMILARITY_TOP_K 定义了要检索的最相似结果的数量,而 VECTOR_DISTANCE_THRESHOLD 设置了检索结果的语义距离上限。此设置使智能体能够从指定的 RAG Corpus 执行可扩展且持久的语义知识检索。该过程有效地将 Google Cloud 的 RAG 功能集成到 ADK 智能体中,从而支持基于事实数据的响应开发。

## 从 google.adk.memory 模块导入必要的 VertexAiRagMemoryService 类。
from google.adk.memory import VertexAiRagMemoryService

RAG_CORPUS_RESOURCE_NAME = "projects/your-gcp-project-id/locations/us-central1/ragCorpora/your-corpus-id"

## 定义一个可选参数,用于设置检索的最相似结果数量。
## 此参数控制 RAG 服务返回的相关文档片段数量。
SIMILARITY_TOP_K = 5

## 定义一个可选参数,用于设置向量距离阈值。
## 此阈值决定检索结果允许的最大语义距离;
## 距离大于此值的结果可能会被过滤掉。
VECTOR_DISTANCE_THRESHOLD = 0.7

## 初始化 VertexAiRagMemoryService 的实例。
## 此操作设置与 Vertex AI RAG Corpus 的连接。
## - rag_corpus: 指定 RAG Corpus 的唯一标识符。
## - similarity_top_k: 设置要获取的最相似结果的最大数量。
## - vector_distance_threshold: 定义过滤结果的相似性阈值。
memory_service = VertexAiRagMemoryService(
    rag_corpus=RAG_CORPUS_RESOURCE_NAME,
    similarity_top_k=SIMILARITY_TOP_K,
    vector_distance_threshold=VECTOR_DISTANCE_THRESHOLD
)

实操代码示例(LangChain)

第三部分,我们将通过一个完整的 LangChain 示例进行讲解。

import os
import requests
from typing import List, Dict, Any, TypedDict

from langchain_community.document_loaders import TextLoader
from langchain_core.documents import Document
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_community.embeddings import OpenAIEmbeddings
from langchain_community.vectorstores import Weaviate
from langchain_openai import ChatOpenAI
from langchain.text_splitter import CharacterTextSplitter
from langchain.schema.runnable import RunnablePassthrough
from langgraph.graph import StateGraph, END

import weaviate
from weaviate.embedded import EmbeddedOptions
import dotenv

## 加载环境变量(例如 OPENAI_API_KEY)
dotenv.load_dotenv()

## 设置您的 OpenAI API 密钥(确保从 .env 文件加载或在此处设置)
## os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"

## --- 1. 数据准备(预处理) ---
## 加载数据
url = "https://github.com/langchain-ai/langchain/blob/master/docs/docs/how_to/state_of_the_union.txt"
res = requests.get(url)
with open("state_of_the_union.txt", "w") as f:
    f.write(res.text)

loader = TextLoader('./state_of_the_union.txt')
documents = loader.load()

## 将文档分块
text_splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = text_splitter.split_documents(documents)

## 嵌入并存储文本块到 Weaviate
client = weaviate.Client(embedded_options=EmbeddedOptions())
vectorstore = Weaviate.from_documents(
    client=client,
    documents=chunks,
    embedding=OpenAIEmbeddings(),
    by_text=False
)

## 定义检索器
retriever = vectorstore.as_retriever()

## 初始化 LLM
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)

## --- 2. 定义 LangGraph 的状态 ---
class RAGGraphState(TypedDict):
    question: str
    documents: List[Document]
    generation: str

## --- 3. 定义节点(函数) ---
def retrieve_documents_node(state: RAGGraphState) -> RAGGraphState:
    """根据用户问题检索相关文档。"""
    question = state["question"]
    documents = retriever.invoke(question)
    return {"documents": documents, "question": question, "generation": ""}

def generate_response_node(state: RAGGraphState) -> RAGGraphState:
    """基于检索到的文档使用 LLM 生成响应。"""
    question = state["question"]
    documents = state["documents"]
    # 从 PDF 获取的提示模板
    template = """你是一个用于问答任务的助手。请使用以下检索到的上下文片段回答问题。如果你不知道答案,请直接说你不知道。最多使用三句话,并保持回答简洁。
问题: {question}
上下文: {context}
回答: """
    prompt = ChatPromptTemplate.from_template(template)
    # 格式化文档中的上下文
    context = "\n\n".join([doc.page_content for doc in documents])
    # 创建 RAG 链
    rag_chain = prompt | llm | StrOutputParser()
    # 执行链
    generation = rag_chain.invoke({"context": context, "question": question})
    return {"question": question, "documents": documents, "generation": generation}

## --- 4. 构建 LangGraph 图 ---
workflow = StateGraph(RAGGraphState)
## 添加节点
workflow.add_node("retrieve", retrieve_documents_node)
workflow.add_node("generate", generate_response_node)
## 设置入口点
workflow.set_entry_point("retrieve")
## 添加边(状态转换)
workflow.add_edge("retrieve", "generate")
workflow.add_edge("generate", END)
## 编译图
app = workflow.compile()

## --- 5. 运行 RAG 应用 ---
if __name__ == "__main__":
    print("\n--- 运行 RAG 查询 ---")
    query = "总统对布雷耶法官说了什么"
    inputs = {"question": query}
    for s in app.stream(inputs):
        print(s)

    print("\n--- 运行另一个 RAG 查询 ---")
    query_2 = "总统对经济说了什么?"
    inputs_2 = {"question": query_2}
    for s in app.stream(inputs_2):
        print(s)

这段 Python 代码展示了一个使用 LangChain 和 LangGraph 实现的检索增强生成(RAG)管道。该流程从文本文档创建知识库开始,将文档分割为多个块并转换为嵌入向量。这些嵌入向量存储在 Weaviate 向量存储中,以实现高效的信息检索。LangGraph 中的 StateGraph 用于管理两个关键功能之间的工作流:retrieve_documents_nodegenerate_response_noderetrieve_documents_node 函数根据用户输入查询向量存储以识别相关的文档块。随后,generate_response_node 函数利用检索到的信息和预定义的提示模板,通过 OpenAI 大型语言模型(LLM)生成响应。app.stream 方法允许通过 RAG 管道执行查询,展示系统生成上下文相关输出的能力。

概览

定义(What)

大型语言模型(LLMs)具备令人印象深刻的文本生成能力,但其功能受限于训练数据。这些知识是静态的,意味着它不包含实时信息或私密、领域特定的数据。因此,它们的回答可能过时、不准确,或缺乏完成专业任务所需的特定上下文。这种缺陷限制了它们在需要当前且准确答案的应用中的可靠性。

设计意图(Why)

检索增强生成(Retrieval-Augmented Generation,RAG)模式通过将大型语言模型与外部知识源连接起来,提供了一种标准化的解决方案。当接收到查询时,系统首先从指定的知识库中检索相关信息片段。这些片段随后被附加到原始提示中,为其提供及时且具体的上下文。经过增强的提示被发送到大型语言模型,使其能够生成准确、可验证且基于外部数据的响应。此过程有效地将大型语言模型从“闭卷推理者”转变为“开卷推理者”,显著提升其实用性和可信度。

使用原则(Rule of Thumb)

当需要大型语言模型基于其原始训练数据中未包含的特定、最新或专有信息回答问题或生成内容时,可使用此模式。它非常适合用于构建基于内部文档的问答系统、客户支持机器人,以及需要带有引用的可验证、基于事实的响应的应用。

图解 (Visual Summary)

知识检索模式:一个AI智能体查询并从结构化数据库中检索信息

知识检索模式:一个AI智能体查询并从结构化数据库中检索信息

图3:知识检索模式:一个AI智能体根据用户查询从公共互联网中查找并综合信息。

图3:知识检索模式:一个AI智能体根据用户查询从公共互联网中查找并综合信息。

关键要点

  • 知识检索(RAG)通过允许大型语言模型访问外部、最新和特定信息来增强其功能。
  • 该过程包括检索(从知识库中搜索相关片段)和增强(将这些片段添加到大型语言模型的提示中)。
  • RAG帮助大型语言模型克服过时训练数据的局限性,减少“幻觉”,并实现领域特定知识的整合。
  • RAG允许生成可追溯的答案,因为大型语言模型的响应基于检索到的来源。
  • GraphRAG利用知识图谱理解信息之间的关系,能够回答需要综合多个来源数据的复杂问题。
  • Agentic RAG超越了简单的信息检索,通过使用智能智能体主动推理、验证和完善外部知识,确保答案更准确可靠。
  • 实际应用包括企业搜索、客户支持、法律研究和个性化推荐等领域。

结论

总之,检索增强生成(RAG)通过连接大型语言模型与外部、最新的数据源,解决了其静态知识的核心局限性。该过程首先检索相关信息片段,然后增强用户的提示,使大型语言模型能够生成更准确且具有上下文意识的响应。这得益于嵌入技术、语义搜索和向量数据库等基础技术,它们基于意义而非仅仅关键词来查找信息。通过将输出基于可验证的数据,RAG显著减少了事实错误,并允许使用专有信息,通过引用增强了可信度。

一种先进的进化形式——Agentic RAG,引入了一个推理层,该层能够主动验证、协调并综合检索到的知识,从而显著提高可靠性。同样,诸如 GraphRAG 这样的专门方法利用知识图谱来导航显式数据关系,使系统能够综合回答高度复杂、相互关联的查询。这种智能智能体能够解决冲突信息、执行多步骤查询,并使用外部工具来查找缺失数据。尽管这些先进方法增加了复杂性和延迟,但它们极大地提升了最终响应的深度和可信度。这些模式的实际应用已经在企业搜索、客户支持到个性化内容交付等行业中引发变革。尽管面临挑战,RAG 是使 AI 更加知识丰富、可靠且实用的重要模式。最终,它将大型语言模型(LLM)从封闭式对话者转变为强大的开放式推理工具。

参考文献

  1. Lewis, P., 等人. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. https://arxiv.org/abs/2005.11401
  2. Google AI for Developers Documentation. Retrieval Augmented Generation - https://cloud.google.com/vertex-ai/generative-ai/docs/rag-engine/rag-overview
  3. Retrieval-Augmented Generation with Graphs (GraphRAG), https://arxiv.org/abs/2501.00309
  4. LangChain 和 LangGraph: Leonie Monigatti, "Retrieval-Augmented Generation (RAG): 从理论到 LangChain 实现," https://medium.com/data-science/retrieval-augmented-generation-rag-from-theory-to-langchain-implementation-4e9bd5f6a4f2
  5. Google Cloud Vertex AI RAG Corpus https://cloud.google.com/vertex-ai/generative-ai/docs/rag-engine/manage-your-rag-corpus#corpus-management

results matching ""

    No results matching ""