微信扫码
添加专属顾问
阿里妹导读
一、概述
增强训练:REALM[7]引入了知识检索器增强大模型预训练,以改进大模型的问答质量和可解释性。
增强微调:RA-DIT[10]实现了对大模型和检索器的双指令微调,RAFT[11]通过微调让大模型可以识别干扰文档。
增强语料:MuRAG[12]支持了多模态数据的检索,提升了大模型在文本/图像混合检索场景下的推理质量。
增强知识:GraphRAG[22]使用图社区摘要解决总结性查询任务的问题,将知识图谱技术应用到RAG。
增强检索:CRAG[13]通过对检索到的文档置信度进行评估,提升问答上下文的质量。
增强推理:RAT[8]在推理阶段将RAG与CoT相结合,以改进长期推理和生成任务的效果。
二、传统RAG
生成(文档上下文):Retriver检索的结果文档作为上下文和问题一起提交给大模型处理。
知识库内容缺失:现有的文档其实回答不了用户的问题,系统有时被误导,给出的回应其实是“胡说八道”,理想情况系统应该回应类似“抱歉,我不知道”。
TopK截断有用文档:和用户查询相关的文档因为相似度不足被TopK截断,本质上是相似度不能精确度量文档相关性。
上下文整合丢失:从数据库中检索到包含答案的文档,因为重排序/过滤规则等策略,导致有用的文档没有被整合到上下文中。
有用信息未识别:受到LLM能力限制,有价值的文档内容没有被正确识别,这通常发生在上下文中存在过多的噪音或矛盾信息时。
提示词格式问题:提示词给定的指令格式出现问题,导致大模型/微调模型不能识别用户的真正意图。
准确性不足:LLM没能充分利用或者过度利用了上下文的信息,比如给学生找老师首要考虑的是教育资源的信息,而不是具体确定是哪个老师。另外,当用户的提问过于笼统时,也会出现准确性不足的问题。
答案不完整:仅基于上下文提供的内容生成答案,会导致回答的内容不够完整。比如问“文档 A、B和C的主流观点是什么?”,更好的方法是分别提问并总结。
问题1-3:属于知识库工程层面的问题,可以通过完善知识库、增强知识确定性、优化上下文整合策略解决。
问题4-6:属于大模型自身能力的问题,依赖大模型的训练和迭代。
问题7:属于RAG架构问题,更有前景的思路是使用Agent引入规划能力。
Structured data, such as knowledge graphs (KGs), provide high-quality context and mitigate model hallucinations.
需要说明的是,从文本中提取三元组和关键词借助了现有的文本大模型的能力,传统的NLP技术如分词、句法分析、实体识别等已经不再是SOTA。另外,借助于大模型微调技术,可以针对性的构建面向知识抽取、实体识别、自然语言翻译的专有大模型。比如由蚂蚁和浙大联合研发的大模型知识抽取框架OneKE[38]在零样本泛化性能上全面超过了现有模型。以及借助于Text2GQL、Text2Cypher技术微调的图查询语言专有模型,可以直接将自然语言转换为图查询语言,代替基于关键词中心的子图搜索从而获得更精确的图谱数据。
四、通用RAG设计
4.1 架构设计
于是一个兼容多种知识索引格式的通用RAG架构,可以按照如下方式设计。
最上层借助于IndexStore核心抽象,搭配外围的Loader/Splitter实现文本读取切分、Transformer实现索引的构建、Retriver/Synthesizer实现知识检索与合成,构建完整的RAG能力。
4.2 领域建模
为了让框架有足够的灵活性,我们将索引的加工和存储进行了分离,并使用“桥接模式”构建抽象依赖关系。
索引的加工接口(Transformer)提供三类特定实现:嵌入、抽取、翻译。向量索引走嵌入的方式,如Text2Vector、OpenAI Embedding等。图索引走Extractor,如三元组抽取、关键词抽取等。翻译可以作为通用能力单独对待,承载DSL的模型微调能力,如Text2SQL、Text2GQL、Text2Cypher等。索引加工的输入是Splliter切分好的文本块(未来也可以是多模态数据),输出是索引存储系统,是连接内容和存储的桥梁。
索引的存储接口(IndexStore)提供了向量存储和知识图谱两类实现,知识图谱接口依赖于图存储接口,也可以单独实现。从这里也能看出图存储系统的定位是数据基座而非搜索语义,它和向量存储不在同一个架构层次。
4.3 技术选型
五、开源技术方案
5.1 索引
TRIPLET_EXTRACT_PT = ("Some text is provided below. Given the text, ""extract up to knowledge triplets as more as possible ""in the form of (subject, predicate, object).\n""Avoid stopwords.\n""---------------------\n""Example:\n""Text: Alice is Bob's mother.\n""Triplets:\n(Alice, is mother of, Bob)\n"...TL;DR..."Text: Philz is a coffee shop founded in Berkeley in 1982.\n""Triplets:(Philz, is, coffee shop)\n(Philz, founded in, Berkeley)\n(Philz, founded in, 1982)\n""---------------------\n""Text: {text}\n""Triplets:\n")5.2 存储
async def aload_document(self, chunks: List[Chunk]) -> List[str]:"""Extract and persist triplets to graph store.Args:chunks: List[Chunk]: document chunks.Return:List[str]: chunk ids."""for chunk in chunks:triplets = await self._triplet_extractor.extract(chunk.content)for triplet in triplets:self._graph_store.insert_triplet(*triplet)logger.info(f"load {len(triplets)} triplets from chunk {chunk.chunk_id}")return [chunk.chunk_id for chunk in chunks]def insert_triplet(self, subj: str, rel: str, obj: str) -> None:"""Add triplet."""...TL;DR...subj_query = f"MERGE (n1:{self._node_label} {{id:'{subj}'}})"obj_query = f"MERGE (n1:{self._node_label} {{id:'{obj}'}})"rel_query = (f"MERGE (n1:{self._node_label} {{id:'{subj}'}})"f"-[r:{self._edge_label} {{id:'{rel}'}}]->"f"(n2:{self._node_label} {{id:'{obj}'}})")self.conn.run(query=subj_query)self.conn.run(query=obj_query)self.conn.run(query=rel_query)5.3 检索
接口ExtractorBase的另一个实现则是关键词抽取器KeywordExtractor,负责提取用户问题中涉及的实体关键词,它也是借助大模型的能力实现的,同样继承于LLExtractor,提示词模板如下。
KEYWORD_EXTRACT_PT = ("A question is provided below. Given the question, extract up to ""keywords from the text. Focus on extracting the keywords that we can use ""to best lookup answers to the question.\n""Generate as more as possible synonyms or alias of the keywords ""considering possible cases of capitalization, pluralization, ""common expressions, etc.\n""Avoid stopwords.\n""Provide the keywords and synonyms in comma-separated format.""Formatted keywords and synonyms text should be separated by a semicolon.\n""---------------------\n""Example:\n""Text: Alice is Bob's mother.\n""Keywords:\nAlice,mother,Bob;mummy\n""Text: Philz is a coffee shop founded in Berkeley in 1982.\n""Keywords:\nPhilz,coffee shop,Berkeley,1982;coffee bar,coffee house\n""---------------------\n""Text: {text}\n""Keywords:\n")@abstractmethoddef explore(self,subs: List[str],direct: Direction = Direction.BOTH,depth: Optional[int] = None,fan: Optional[int] = None,limit: Optional[int] = None,) -> Graph:"""Explore on graph."""
这里对接口含义做补充说明:
query = (f"MATCH p=(n:{self._node_label})"f"-[r:{self._edge_label}*1..{depth}]-(m:{self._node_label}) "f"WHERE n.id IN {subs} RETURN p LIMIT {limit}")5.4 生成
async def asimilar_search_with_scores(self,text,topk,score_threshold: float,filters: Optional[MetadataFilters] = None,) -> List[Chunk]:"""Search neighbours on knowledge graph."""if not filters:logger.info("Filters on knowledge graph not supported yet")# extract keywords and explore graph storekeywords = await self._keyword_extractor.extract(text)subgraph = self._graph_store.explore(keywords, limit=topk)logger.info(f"Search subgraph from {len(keywords)} keywords")content = ("The following vertices and edges data after [Subgraph Data] ""are retrieved from the knowledge graph based on the keywords:\n"f"Keywords:\n{','.join(keywords)}\n""---------------------\n""You can refer to the sample vertices and edges to understand ""the real knowledge graph data provided by [Subgraph Data].\n""Sample vertices:\n""(alice)\n""Sample edges:\n""(alice)-[reward]->(alice)\n""---------------------\n"f"Subgraph Data:\n{subgraph.format()}\n")return [Chunk(content=content, metadata=subgraph.schema())]
5.5 测试
六、优化方向
GraphRAG, like RAG, has clear limitations, which include how to form graphs, generate queries for querying these graphs, and ultimately decide how much information to retrieve based on these queries. The main challenges are ‘query generation’, ‘reasoning boundary’, and ‘information extraction’.
6.1 内容索引阶段
Graph RAG的内容索引阶段主要目标便是构建高质量的知识图谱,值得继续探索的有以下方向:
图谱元数据:从文本到知识图谱,是从非结构化信息到结构化信息的转换的过程,虽然图一直被当做半结构化数据,但有结构的LPG(Labeled Property Graph)除了有利于图存储系统的性能优化,还可以协助大模型更好地理解知识图谱的语义,帮助其生成更准确的查询。
知识抽取微调:通用大模型在三元组的识别上实际测试下来仍达不到理想预期,针对知识抽取的微调模型反而表现出更好地效果,如前面提到的OneKE。
图社区总结:这部分源自于微软的Graph RAG的研究工作,通过构建知识图谱时生成图社区摘要,以解决知识图谱在面向总结性查询时“束手无策”的问题。另外,同时结合图社区总结与子图明细可以生成更高质量的上下文。
多模态知识图谱:多模态知识图谱可以大幅扩展Graph RAG知识库的内容丰富度,对客观世界的数据更加友好,浙大的MyGO[37]框架提出的方法提升MMKGC(Multi-modal Knowledge Graph Completion)的准确性和可靠性。Graph RAG可以借助于MMKG(Multi-modal Knowledge Graph)和MLLM(Multi-modal Large Language Model)实现更全面的多模态RAG能力。
混合存储:同时使用向量/图等多种存储系统,结合传统RAG和Graph各自的优点,组成混合RAG。参考文章[27]提出的多种Graph RAG架构,如图学习语义聚类、图谱向量双上下文增强、向量增强图谱搜索、混合检索、图谱增强向量搜索等,可以充分利用不同存储的优势提升检索质量。
6.2 检索生成阶段
Graph RAG的检索生成阶段主要目标便是从知识图谱上召回高质量上下文,值得继续探索的有以下方向:
图语言微调:使用自然语言在知识图谱上做召回,除了基本的关键词搜索方式,还可以尝试使用图查询语言微调模型,直接将自然语言翻译为图查询语句,这里需要结合图谱的元数据以获得更准确的翻译结果。过去,我们在Text2GQL上做了一些初步的工作。
混合RAG:这部分与前边讲过的混合存储是一体的,借助于底层的向量/图/全文索引,结合关键词/自然语言/图语言多种检索形式,针对不同的业务场景,探索高质量Graph RAG上下文的构建。
测试验证:Graph RAG的测试和验证可以参考传统RAG的Benchmark方案,如RAGAS[32]、ARES[35]、RECALL[36]、RGB[33]、CRUD-RAG[34]等。
七、尾记
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-06-30
花叔的这个神器直接让你的AI Agent出高保真原型、PPT和动画,20k stars不是盖的
2026-06-30
阿里达摩院开源语音识别:比Whisper快170倍还免费,CPU就能跑
2026-06-30
MiniMax M3 实测:第一流的模型,已经对执行层动手了
2026-06-30
DSpark:DeepSeek 如何让大模型推理提速 85%
2026-06-30
告别云端付费!3秒克隆你的声音,这款开源AI不用GPU,手机CPU就能实时跑
2026-06-30
阿里开源 ReMe:像写双链笔记一样给 AI Agent 做长期记忆
2026-06-30
一次关于 AI 需求交付Skills的优化升级
2026-06-30
阿里开源 Open Code Review:让 AI 代码审查从“会看”走向“看得准”
2026-04-09
2026-04-03
2026-04-01
2026-04-18
2026-04-18
2026-06-22
2026-04-02
2026-05-10
2026-05-06
2026-05-20
2026-06-16
2026-05-30
2026-05-16
2026-04-22
2026-04-21
2026-04-15
2026-04-09
2026-04-01
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。