1. 项目概述:当RAG不再是唯一答案
最近和几个做AI应用的朋友聊天,发现大家一提到“让大模型懂你的私有知识”,第一反应就是RAG(检索增强生成)。这几乎成了行业里的标准答案,就像一提到“数据库”就想到MySQL一样。但做项目久了,尤其是处理一些复杂、动态或对精度要求极高的场景时,你总会发现,RAG这套“检索-喂给LLM-生成”的流程,有时候会显得有点笨重,甚至力不从心。
比如,你正在构建一个智能客服,用户的问题可能涉及公司内部几十份不断更新的政策文档。用RAG,你得先切分文档、向量化、建索引,用户提问时再检索最相关的几个片段。但如果用户的问题是“对比一下A政策和最新修订的B政策在第三条上的差异”,RAG检索出的片段可能只包含了A政策的第三条,或者B政策修订前的版本,而“最新修订”这个动态信息和“对比”这个复杂推理,单纯靠检索几个静态片段很难完美解决。再比如,开发一个辅助代码生成的工具,需要模型理解整个项目的代码结构、模块间的调用关系,这种“图”状的知识,用传统的向量相似度检索,效果也常常差强人意。
这就是我们今天要深入探讨的核心:在AI应用开发中,除了RAG,我们还有哪些技术选择?这绝不是要否定RAG,它的简单、有效、易于上手,使其成为绝大多数场景下的首选。但作为一名开发者,我们的工具箱里不能只有一把锤子。了解替代方案,能帮助我们在面对特定难题时,做出更优的技术选型。本文将结合我过去在复杂知识库、动态数据流和智能体应用中的实战经验,为你拆解几种有潜力替代或补充RAG的技术范式,包括超长上下文模型、智能体驱动的检索(Agentic Retrieval)以及新兴的LLM Wiki架构思路。无论你是正在为RAG的精度头疼,还是在规划下一代AI应用架构,相信这些内容都能给你带来新的启发。
2. 核心思路解析:为什么我们需要超越RAG?
在深入具体技术之前,我们得先想明白,RAG在哪些地方会“卡脖子”。只有诊断清楚痛点,才能对症下药,找到合适的替代或增强方案。
2.1 RAG的经典流程与固有瓶颈
标准的RAG流程可以简化为四步:文档处理(切分、向量化)、索引构建、查询检索(计算相似度)、提示拼接与生成。它的核心优势在于,将外部知识库通过“检索”这个动作,动态地、按需地注入到大模型的上下文中,解决了模型静态知识过时和幻觉问题。
然而,这套流程隐含着几个关键假设,一旦假设不成立,瓶颈就出现了:
- “相似即相关”假设:RAG严重依赖向量相似度来判定文本片段的相关性。但语义相似不等于逻辑相关。比如,“苹果公司发布新手机”和“我今天吃了一个红苹果”,向量可能很接近,但对于一个商业问答系统,后者是完全无关的噪声。更棘手的是多跳推理问题,例如“张三的导师的同事发表了哪些论文?”,需要先检索“张三的导师是谁”,再根据结果检索“该导师的同事”,最后检索“这些同事的论文”。传统RAG的一次性检索很难串联这个链条。
- “静态片段”假设:RAG处理的知识通常被预切分为固定长度的片段(chunks)。这破坏了文档的原始结构和连贯性。对于代码、法律条文、技术手册这种结构严谨、上下文依赖强的文本,切分可能导致关键信息(如函数定义和调用、法条的前后参照)被割裂,检索到的片段缺乏完整语境。
- “一次性交互”假设:经典的RAG是“一问一答”模式。用户提问,系统检索,模型生成,结束。但在复杂的任务中,用户可能需要澄清、模型可能需要追问、或者任务本身需要拆解为多个步骤。这种多轮、主动的交互能力,是传统RAG流程所不具备的。
- “上下文窗口限制”的妥协:即使有了128K甚至更长上下文的模型,我们依然倾向于使用RAG,是因为把大量文档全部塞进上下文,成本极高且可能引入无关信息干扰模型。RAG本质上是利用检索在“大海”里捞“针”,只把最可能的“针”放入有限的上下文窗口。但如果“捞针”的算法(检索器)不够精准,整个系统的基础就动摇了。
2.2 替代技术的核心设计思想
基于以上瓶颈,新兴的替代或增强技术主要从以下几个思路进行突破:
- 思路一:绕过检索,直接容纳。如果模型的上下文窗口足够长,长到能放下整个知识库呢?这就是超长上下文模型的思路。它试图从根本上取消“检索”这个中间环节,避免检索带来的信息损失和误差。
- 思路二:让检索变得更智能。如果检索不是一次性的、基于简单相似度的,而是由一个大模型智能体来驱动,进行多步、规划式的“思考”后再行动呢?这就是智能体驱动检索(Agentic Retrieval)的核心。它把检索动作本身,变成了一个可由LLM规划、决策、执行并迭代的子任务。
- 思路三:重构知识表示与访问方式。如果不把知识看成是一堆扁平的文字片段,而是将其组织成结构化的、可相互链接的网络(就像维基百科),让模型学会像人一样在这个网络中“浏览”和“综合”信息呢?这就是LLM Wiki这类构想背后的灵感。它改变了知识存储和访问的范式。
理解这些不同的设计思想,比记住某个框架的名字更重要。接下来,我们就逐一拆解这些技术,看看它们具体如何工作,以及在实际项目中该如何应用和选型。
3. 技术方案一:超长上下文模型 —— 用“广度”换“精度”
当Claude 3支持200K上下文,GPT-4 Turbo支持128K,国内一些模型也纷纷推出长上下文版本时,“把整个知识库丢进提示词”成了一个诱人的想法。这听起来像是“暴力破解”,但确实在某些场景下简单有效。
3.1 工作原理与适用场景
超长上下文模型的技术本质,是极大扩展了模型单次处理的信息量上限。你不需要复杂的检索系统,只需要做好知识库的预处理和提示词工程。
它的工作流程极度简化:
- 知识库预处理:清洗、格式化你的所有文档,将它们拼接成一个连贯的、结构清晰的文本块。这一步的关键在于信息密度和组织逻辑,而不是切分。
- 提示词构建:创建一个系统提示词,明确告诉模型:“接下来我将提供完整的知识库,请基于此回答用户问题。”然后将拼接好的知识库全文和用户问题一起输入。
- 模型推理:模型利用其强大的长上下文理解能力,自行在提供的海量文本中定位、提取、综合信息并生成答案。
最适合超长上下文的场景通常满足以下特点:
- 知识库规模可控:总文本量在模型上下文窗口的舒适区内(例如,预留足够空间给提示词和回答后,还能容纳全部知识)。通常适用于百万字级别的知识库。
- 查询综合性强:用户问题需要横跨多个文档、章节进行综合比对和总结。例如,“对比我们公司过去三年所有产品白皮书中提到的安全策略演进”。
- 信息关联度极高:知识内部联系紧密,任何切分都可能造成严重信息损失。例如,一份复杂的软件API文档,其中函数A的说明中引用了数据结构B,而B的定义又在另一个章节。
- 对延迟要求不苛刻:由于输入文本极长,模型的推理时间(Token生成速度)和API成本会显著增加。这适合对实时性要求不高(如异步分析报告)或成本不敏感的内部场景。
注意:并非模型宣称支持128K,你就能塞满128K且获得好效果。模型对上下文中间部分的信息记忆和理解能力会弱于开头和结尾(称为“中间丢失”问题)。因此,知识库的组织顺序(把最重要的内容放在开头和结尾)、结构化程度(使用清晰的标题、列表、标记)至关重要。
3.2 实战配置与成本考量
假设我们使用一个支持128K上下文的模型API(如GPT-4 Turbo 128k),来构建一个公司内部规章制度问答系统。
步骤1:知识库预处理我们不是切分,而是“编织”。将所有规章制度文档转换为Markdown格式,并按照一个清晰的目录结构进行组织:
# 公司规章制度全集 ## 一、人力资源制度 ### 1.1 考勤管理办法 (正文内容...) ### 1.2 薪酬福利体系 (正文内容...) ## 二、财务管理制度 ### 2.1 费用报销流程 (正文内容...) ...确保无格式错误,章节链接清晰。最终合并的文本大小需控制在90K Token以内(为提示词和回答预留空间)。
步骤2:构建系统提示词系统提示词需要精心设计,以引导模型高效利用长上下文:
你是一个专业的公司制度助手。你的知识来源是紧随本提示之后的《公司规章制度全集》完整文本。 请严格根据提供的制度文本来回答用户问题。 回答要求: 1. 引用相关制度时,请注明出处章节(如“根据《1.1考勤管理办法》第三条规定”)。 2. 如果问题涉及多个制度,请先分别说明,再进行综合解释。 3. 如果制度中没有明确规定,请如实告知“制度中未找到明确规定”,切勿编造。 现在,请先阅读并理解接下来的制度全文:步骤3:调用与评估通过API发送请求,输入内容为系统提示词 + 知识库全文 + 用户问题。你需要密切关注:
- 响应时间:首次Token返回时间(TTFT)和整体生成时间,评估用户体验。
- 答案质量:是否准确引用了正确章节?综合问题的回答是否全面?
- 成本:计算每次问答的输入Token和输出Token费用。如果知识库80K Token,问题0.5K,回答2K,那么单次成本就是
(80.5+2) * 单价。这对于高频问答场景可能是不可接受的。
成本对比示例: 假设某云服务上,GPT-4 Turbo 128k的输入价格为 $10 / 1M tokens,输出价格为 $30 / 1M tokens。
- RAG方案:检索到3个相关片段,总计6K Token,加上问题提示共7K输入。成本约为
0.007 * $10 = $0.07。 - 超长上下文方案:每次输入整个80K Token知识库。成本约为
0.08 * $10 = $0.8。单次成本相差10倍以上。如果每天有1000次问答,成本差异就是每天730美元 vs 80美元。这还不算更长的响应时间带来的间接成本。
因此,超长上下文模型是一个“用金钱换简单”的方案。它消除了检索系统开发、维护和调试的复杂性,也避免了检索不准确带来的误差,但代价是高昂的运营成本和潜在的延迟。它最适合知识库相对稳定、查询频率较低、但对答案完整性和准确性要求极高的“关键任务”型场景。
4. 技术方案二:智能体驱动检索(Agentic Retrieval)—— 为检索装上“大脑”
如果检索本身是一个复杂任务,为什么不交给一个“智能体”来完成呢?Agentic Retrieval 不是替换RAG,而是将RAG中的“检索器”升级为一个由LLM驱动的、具备规划、执行、反思能力的智能体。这是当前最活跃、也最能解决复杂问题的演进方向。
4.1 从工具调用到自主规划
传统的RAG中,检索是一个被动的、一次性的函数调用。而在Agentic Retrieval范式中,LLM成为了检索过程的“指挥官”。其核心思想是让LLM根据问题,自主决定:
- 是否需要检索?(可能问题很简单,模型自身知识就能回答)
- 检索什么关键词或问题?(原始问题可能模糊,需要重写或分解)
- 去哪里检索?(可能有多个知识源:向量数据库、传统数据库、搜索引擎、API)
- 检索一次够吗?检索到的结果是否足够回答,是否需要基于当前结果提出新的检索?(实现多跳检索)
这个过程通常通过ReAct(Reasoning + Acting)框架或LangChain的Agent、AutoGen等多智能体框架来实现。
一个典型的多跳问答Agentic Retrieval流程:
- 思考(Reason):LLM分析用户问题“张三的导师的同事发表了哪些论文?”,并规划步骤:“首先,我需要找到‘张三’的导师是谁。然后,我需要找到该导师的同事列表。最后,我需要获取这些同事的论文列表。”
- 行动(Act):LLM调用“检索工具”,输入查询“张三 导师”。
- 观察(Observe):工具返回结果:“张三的导师是李四教授。”
- 再思考(Reason):LLM根据观察,进行下一步规划:“好的,现在我需要检索‘李四教授 同事’。”
- 再行动(Act):调用检索工具,输入新查询“李四教授 同事”。
- 再观察(Observe):工具返回结果:“李四教授的同事包括:王五、赵六。”
- 最终思考与行动:LLM规划:“现在我需要分别检索‘王五 论文’和‘赵六 论文’。” 然后执行检索,合并结果,最终生成答案。
可以看到,智能体将复杂的检索逻辑内化为了自己的“思考链”,而检索工具变成了它听话的“手脚”。这完美解决了传统RAG难以处理的多跳推理问题。
4.2 架构设计与关键组件实现
构建一个Agentic Retrieval系统,你需要以下几个核心组件:
| 组件 | 职责 | 实现示例(基于LangChain) |
|---|---|---|
| 智能体(Agent) | 大脑。负责规划、决策、调用工具。 | 使用create_react_agent函数,配备一个LLM(如ChatOpenAI)和一系列工具。 |
| 工具(Tools) | 手脚。执行具体任务,如检索、计算、查询API。 | 定义RetrieverTool,背后连接你的向量数据库(如Chroma、Pinecone)。可以定义多个不同来源的工具。 |
| 记忆(Memory) | 短期记忆。存储当前对话和多轮工具调用的历史。 | 使用ConversationBufferWindowMemory,让智能体记住之前的交互。 |
| 执行器(Executor) | 运行引擎。驱动智能体循环执行“思考-行动-观察”直到结束。 | 使用AgentExecutor,可以设置最大迭代次数以防死循环。 |
一个简化的代码框架示意:
from langchain.agents import create_react_agent, AgentExecutor from langchain.tools import Tool from langchain_community.vectorstores import Chroma from langchain_openai import ChatOpenAI, OpenAIEmbeddings from langchain.memory import ConversationBufferWindowMemory # 1. 准备检索工具(可以是多个) vectorstore = Chroma(persist_directory="./chroma_db", embedding_function=OpenAIEmbeddings()) retriever = vectorstore.as_retriever(search_kwargs={"k": 4}) def retrieve_docs(query: str) -> str: """一个检索文档的函数""" docs = retriever.get_relevant_documents(query) return "\n\n".join([doc.page_content for doc in docs]) retrieval_tool = Tool( name="KnowledgeBase Search", func=retrieve_docs, description="Useful for searching company internal knowledge to answer questions." ) # 2. 创建智能体 llm = ChatOpenAI(model="gpt-4", temperature=0) tools = [retrieval_tool] # 可以加入更多工具,如计算器、网络搜索工具 prompt = ... # ReAct风格的提示词模板 agent = create_react_agent(llm, tools, prompt) # 3. 配置记忆和执行器 memory = ConversationBufferWindowMemory(k=5, memory_key="chat_history", return_messages=True) agent_executor = AgentExecutor(agent=agent, tools=tools, memory=memory, verbose=True, max_iterations=5) # 4. 运行 result = agent_executor.invoke({"input": "请对比一下项目A和项目B在风险管理策略上的异同?"}) print(result["output"])在这个例子中,智能体可能会先检索“项目A 风险管理策略”,再检索“项目B 风险管理策略”,然后基于两份材料进行对比总结。整个过程是自动规划的。
4.3 避坑指南与效能优化
Agentic Retrieval功能强大,但引入的复杂性也带来了新的挑战:
- 幻觉与循环风险:智能体可能“幻想”出一个不存在的工具调用步骤,或者陷入“检索-不满意-再检索”的死循环。对策:严格限制最大迭代次数(
max_iterations,通常5-10次足够);在工具描述中清晰界定其能力和边界;在系统提示词中强调“如果信息不足,请直接告知用户,不要编造”。 - 延迟与成本:每一次“思考”和“行动”都是一次LLM API调用。多轮交互意味着数倍于传统RAG的调用次数和延迟。对策:优化提示词,让智能体的“思考”更简洁高效;对于简单问题,可以设置一个“短路”逻辑,先尝试用一次检索直接回答,不行再启动智能体流程;考虑使用更快的模型(如GPT-3.5 Turbo)作为智能体的“大脑”,虽然推理能力稍弱,但速度更快、成本更低。
- 工具设计的艺术:工具不是越多越好。工具功能重叠或描述不清会导致智能体困惑。对策:每个工具应有单一、明确的职责和清晰的自然语言描述。例如,将“检索员工信息”和“检索项目文档”设计成两个独立的工具,比一个通用的“检索”工具更好。
- 评估难度大:传统RAG的评估相对直接(检索召回率、答案准确性)。智能体系统的评估则涉及规划路径的正确性、工具调用的合理性等,更复杂。对策:建立端到端的测试用例库,不仅检查最终答案,也记录和分析智能体的决策过程,进行人工评估和调优。
实操心得:不要一开始就追求全自动的复杂智能体。可以从一个最简单的“检索-重写”智能体开始:用户提问后,智能体先判断是否需要重写查询词(例如,将口语化问题转为关键词),然后用重写后的词进行一次检索。这个小改进往往就能显著提升传统RAG的效果,是迈向Agentic Retrieval的稳妥第一步。
5. 技术方案三:LLM Wiki与结构化知识网络 —— 重新定义“知识库”
如果说前两种方案还是在“检索”和“输入”的维度上优化,那么LLM Wiki的思路则更加激进——它试图改变知识本身的组织形式。这个概念由一些前沿讨论提出(如Karpathy提到的“LLM OS”中的知识层),其核心是将知识库构建成一个机器可读且可写、高度结构化、相互链接的网络,类似于维基百科,但为LLM的访问模式而优化。
5.1 理念:从文档仓库到知识图谱
传统RAG的知识库是一个“文档仓库”,文档之间是孤立的。LLM Wiki设想的知识库是一个“知识图谱”或“超文本网络”。
- 节点:不再是随机的文本片段,而是有明确语义的“知识单元”,可以是一段定义、一个事实、一个代码函数说明、一条产品特性。
- 边:节点之间通过丰富的链接关系连接,如“属于”、“引用”、“相反”、“依赖于”、“是……的实例”。
- 元数据:每个节点携带丰富的结构化元数据,如创建时间、作者、置信度、来源、类型(概念、流程、故障等)。
当LLM需要回答问题时,它不再是进行模糊的向量相似度搜索,而是可以执行更精确的“图查询”或“语义导航”。例如,对于问题“函数calculate()在哪些模块中被调用?”,系统可以直接查询以calculate()函数节点为起点的“被调用”关系边,快速定位所有调用它的模块节点。
5.2 实现路径与当前实践
完全实现一个成熟的LLM Wiki是长期愿景,但我们可以借鉴其思想,对现有RAG系统进行增强:
增强检索:图谱与向量融合这是最实用的落地方式。在构建向量索引的同时,利用NLP工具(如实体识别、关系抽取)从文档中提取实体和关系,构建一个轻量级的知识图谱。当用户查询时:
- 向量检索:快速召回一批相关文本片段。
- 图谱检索:识别查询中的实体,在图谱中查找其关联实体。
- 结果融合:将两种检索方式得到的信息进行融合和重排序,作为最终上下文提供给LLM。 例如,使用Neo4j(图数据库)存储实体关系,与Chroma(向量数据库)配合。查询时,先在图谱中查找“iPhone 15”的“竞争对手”节点,得到“三星Galaxy S24”,然后将这两个实体及其相关描述文本作为增强条件,送入向量检索,能更精准地找到对比性内容。
结构化切片与元数据注入改变简单粗暴的按长度切分文档的方式,改为按语义边界切分。对于技术文档,按“函数”、“类”、“API端点”切分;对于法律文档,按“法条”、“章节”切分。为每个切片添加丰富的元数据:
{ "id": "api_login_function", "content": "def login(username, password): ...", "type": "code_function", "module": "auth", "related_entities": ["User", "Session"], "links_to": ["api_logout_function", "api_authenticate_doc"] }在检索时,不仅可以匹配内容,还可以匹配元数据过滤器(
type=="code_function" AND module=="auth"),精度大幅提升。实现“浏览”能力在提示词中,不仅提供检索到的片段,还提供相关片段的“链接”信息。例如:
您查询的“用户登录流程”涉及以下部分:
- 核心函数:
login()(当前片段) - 相关配置:关于
SESSION_TIMEOUT的设置,请参见片段config_security#L12-L25。 - 错误处理:登录失败的常见原因及处理,请参见片段
error_handling_auth#L5-L40。
如果您需要了解以上任何相关部分,请告诉我,我可以为您获取。 这模拟了人类浏览维基百科时,通过超链接跳转获取完整信息的过程。虽然需要多轮交互,但能保证信息的完整性和准确性。
- 核心函数:
5.3 挑战与展望
构建LLM Wiki面临的主要挑战是构建成本高昂。自动化地从非结构化文本中提取精准的结构化知识(实体、关系),仍然是一个NLP难题,通常需要大量的人工标注或领域特定的规则。对于中小型项目,这可能得不偿失。
然而,在以下场景中,投入是值得的:
- 领域知识高度结构化:如软件SDK文档、药品说明书、金融产品条款,本身就有良好的结构。
- 知识关联性极强:如学术文献网络、故障诊断知识库(症状A可能导致问题B和C)。
- 对可解释性要求高:需要清晰展示答案的推理路径和来源,如图谱查询能直观展示实体关系。
个人体会:完全不必追求一步到位建成“Wiki”。可以从为你的文档切片添加几个关键的类型标签(如概念、操作步骤、参数说明、故障代码)开始。在检索时,让用户可以通过下拉菜单选择“只搜索操作步骤”或“只搜索故障代码”,这已经是一个巨大的体验提升,也是迈向结构化知识库的坚实一步。
6. 技术选型与融合策略
面对这么多选择,到底该怎么选?没有银弹,只有最适合你当前场景的权衡。
6.1 决策矩阵:对照你的场景做选择
你可以根据以下几个维度来评估:
| 评估维度 | 传统RAG | 超长上下文模型 | 智能体驱动检索 | 结构化知识增强 |
|---|---|---|---|---|
| 实现复杂度 | 低 | 极低(仅提示工程) | 高 | 中到高 |
| 基础设施依赖 | 需要向量数据库 | 仅需大模型API | 需要智能体框架+工具链 | 可能需要图数据库/复杂ETL |
| 响应速度 | 快(检索快) | 慢(输入长,推理慢) | 慢(多轮LLM调用) | 中等(检索+图查询) |
| 单次查询成本 | 低 | 极高 | 高(多次调用) | 中等 |
| 答案质量(简单QA) | 良好 | 优秀(上下文完整) | 良好 | 良好 |
| 答案质量(复杂推理) | 差 | 中等(依赖模型能力) | 优秀 | 良好(依赖图谱质量) |
| 多跳推理能力 | 无 | 有(模型自行处理) | 优秀 | 优秀(图谱导航) |
| 知识更新难度 | 中(需重建索引) | 中(需更新长文本) | 中(工具需更新) | 高(需更新图谱) |
| 可解释性 | 中(可显示来源片段) | 低(黑盒) | 中(可展示思考链) | 高(可展示关系路径) |
快速决策指南:
- 追求简单快捷,知识库小(<10万字),预算充足:优先考虑超长上下文模型。快糙猛。
- 处理复杂、多步骤的查询任务,愿意投入开发成本:智能体驱动检索是你的不二之选。
- 知识高度结构化,且查询经常涉及实体关系:积极探索结构化知识增强(图谱+向量)。
- 以上都不是,或者处于项目早期需要快速验证:传统RAG依然是可靠、成熟的起点。
6.2 混合架构:现实世界的最佳实践
在实际的大型应用中,单一技术栈往往不够。更常见的是一种分层、混合的架构。
一个电商客服AI的混合架构示例:
- 路由层:用户问题进入后,先由一个轻量级分类模型或规则引擎进行意图识别。
- 如果是“订单状态查询”、“物流跟踪”(需要查询结构化数据库),直接路由到API查询工具,由智能体调用。
- 如果是“这件衣服的材质是什么?”(答案在商品详情页),路由到传统RAG,检索商品描述。
- 如果是“我想买一台适合编程和偶尔玩游戏的笔记本,预算8000左右,请推荐并对比几款”(复杂、多维度、需要推理),路由到智能体驱动检索。智能体可能会先检索“编程笔记本推荐”,再检索“游戏笔记本推荐”,然后调用“比价工具”,最后综合生成答案。
- 如果是“把用户手册第三章念给我听”(长文档、定位精确),且手册不大,可以考虑使用超长上下文模型直接获取。
- 知识层:底层知识库本身采用混合存储。
- 商品详情、文章等文本存在向量数据库。
- 商品分类、品牌、属性等结构化信息存在图数据库。
- 用户订单、库存等实时数据存在业务数据库。
- 执行层:由智能体框架(如LangChain Agent)统一调度各种工具(检索工具、API工具、计算工具)。
这种架构既保证了简单查询的效率,又赋予了系统处理复杂任务的能力,同时控制了成本。它要求前端有一个高效的“路由”或“编排”层,这是设计中的关键。
7. 未来展望与持续学习
AI应用开发的技术栈正在飞速演进。RAG作为起点,已经为我们打开了连接大模型与私有知识的大门。而超长上下文、智能体、结构化知识这些技术,则是在这扇门后的不同路径上继续深挖。
可以预见的是,未来的趋势不会是某种技术完全取代另一种,而是融合与专业化:
- 检索将更加智能和多样化:融合语义检索、图检索、符号检索的“混合检索”将成为标配。
- 智能体成为标准编程范式:用自然语言编排复杂任务流(Agentic Workflow)会像今天写脚本一样普遍。
- 知识表示标准化:可能会出现更适合LLM理解和推理的中间知识表示格式或协议。
- 评估体系完善:针对这些复杂系统的评估标准、基准测试和调试工具会逐渐成熟。
对于我们开发者而言,最重要的不是追逐每一个新名词,而是深刻理解这些技术背后的核心思想——如何更高效、更准确、更可控地将领域知识赋能给大模型。保持动手实践,从小场景开始尝试这些新技术,理解它们的优势和代价,从而在你的具体项目中做出最明智的架构选择。
技术的终点,始终是更好地解决实际问题。当你下次被RAG的局限性困扰时,不妨回过头来看看这张技术地图,或许就能找到那条通往更优解的路径。