RAG(Retrieval Augmented Generation,检索增强生成)最近2年比较随着大模型的发展是越来越火,虽然模型的能力在不断增强,但是始终有以下几点问题需要解决,而RAG可能是解决这些问题的最佳方案:
知识过时问题:大型语言模型(LLMs)的训练数据是静态的,存在知识截止日期问题,即模型所掌握的知识有截止日期,对于最新的信息或者特定领域的知识可能无法获取。
生成内容的“幻觉”现象:LLMs有时会生成不准确或虚假的信息,尤其是在模型自身不具备某一方面知识或不擅长的场景时。
数据安全性问题:对于企业来说,数据安全至关重要,没有企业愿意承担数据泄露的风险,将自身的私域数据上传第三方平台进行训练。
响应的不可预测性:LLM技术的本质在LLM响应中引入了不可预测性,这可能会导致提供过时的或者通用的信息。
非权威来源创建答案:LLM可能会从非权威来源创建答案,导致信息的不准确性。
术语混淆问题:由于不同的训练来源使用相同的术语谈论不同的事,可能会导致LLM产生不准确的响应。
RAG通过从海量的数据源中检索信息来辅助大语言模型生成答案,有效地克服了LLM的一些固有局限性,并显著提高了LLM生成内容的可靠性和可解释性。通过整合外部知识源,RAG能够提供更加准确、与时俱进、符合上下文的响应。此外,RAG还允许特定领域或最新的信息无缝集成到LLM中,降低模型输出产生幻觉的风险。
这2年RAG技术的不断地发展,人们的思路也在不断开拓,从最朴素的关键词检索、向量检索,到给知识库增加预设性问题的相似检索,再到结合图数据的检索。
前几个月,微软的GraphRag借助外部结构化知识图谱来进一步增进语言模型的上下文理解,在一定程度上确实对于检索的准确度完善度有所提升,但是,GraphRAG在索引创建和查询处理中引入了额外的复杂性和计算开销,对于简单的查询任务,特别是GraphRAG与传统RAG都能较好应对的问题来说可能是不合理的。
随后又来了一个lightrag,号称更快,成本更低。
今天我们的主角是fast-graphrag,一个号称更加更加牛逼的框架。这里是他官方的评测结果:
从这个结果来看,简单总结就是全方位多角度吊打~ 咱也不知道是不是在吹牛皮,我们后面慢慢测试体验,让子弹再飞一会。
测试代码
安装很简单,pip一下就行
pip install fast-graphrag
数据准备(是一个100多k的文档)
curl https://raw.githubusercontent.com/circlemind-ai/fast-graphrag/refs/heads/main/mock_data.txt > ./book.txt
测试代码
from fast_graphrag import GraphRAG
DOMAIN = "Analyze this story and identify the characters. Focus on how they interact with each other, the locations they explore, and their relationships."
EXAMPLE_QUERIES = [
"What is the significance of Christmas Eve in A Christmas Carol?",
"How does the setting of Victorian London contribute to the story's themes?",
"Describe the chain of events that leads to Scrooge's transformation.",
"How does Dickens use the different spirits (Past, Present, and Future) to guide Scrooge?",
"Why does Dickens choose to divide the story into \"staves\" rather than chapters?"
]
ENTITY_TYPES = ["Character", "Animal", "Place", "Object", "Activity", "Event"]
grag = GraphRAG(
working_dir="./book_example",
domain=DOMAIN,
example_queries="\n".join(EXAMPLE_QUERIES),
entity_types=ENTITY_TYPES
)
with open("./book.txt") as f:
grag.insert(f.read())
print(grag.query("Who is Scrooge?").response)
到这,本篇已经完结,咱们后面再慢慢研究这个fast graphrag,也欢迎大家在评论区留言,分享你对模型应用的一些经验和看法~