链载Ai

标题: 1.2kStar RAG2.0具备超长记忆,实现全局检索 [打印本页]

作者: 链载Ai    时间: 昨天 11:50
标题: 1.2kStar RAG2.0具备超长记忆,实现全局检索


MemoRAG实战

frommemoragimportMemoRAG

#InitializeMemoRAGpipeline
pipe=MemoRAG(
mem_model_name_or_path="TommyChien/memorag-mistral-7b-inst",
ret_model_name_or_path="BAAI/bge-m3",
gen_model_name_or_path="mistralai/Mistral-7B-Instruct-v0.2",#Optional:ifnotspecify,usememerymodelasthegenerator
cache_dir="path_to_model_cache",#Optional:specifylocalmodelcachedirectory
access_token="hugging_face_access_token",#Optional:HuggingFaceaccesstoken
beacon_ratio=4
)

context=open("examples/harry_potter.txt").read()
query="HowmanytimesistheChamberofSecretsopenedinthebook?"

#Memorizethecontextandsavetocache
pipe.memorize(context,save_dir="cache/harry_potter/",print_stats=True)

#Generateresponseusingthememorizedcontext
res=pipe(context=context,query=query,task_t

MemoRAG

能解决的问题

MemoRAG的主要贡献

  1. 根据query,利用轻量级的LLM充当记忆模块,记忆缓存超过LLM本身长度的上下文知识,用于生成能够理解query的线索
  2. 根据线索,利用重量级的LLM,重新检索数据库,生成精准的答案

线索是如何生成的

  1. 首先,利用query,检索数据库得到上下文
  2. 其次,利用轻量级的LLM(切记必须是能处理超长上下文的语言模型)作为记忆模块,压缩检索得到的上下文,到LLM可以接受的长度,生成线索。例如:

作者发布了两个记忆模块memorag-qwen2-7b-instmemorag-mistral-7b-inst,它们分别基于 Qwen2-7B-InstructMistral-7B-Instruct-v0.2在实际应用当中memorag-mistral-7b-inst 在上下文长度高达 150K token时表现良好,而 memorag-qwen2-7b-inst 在上下文长度高达 600K token时有良好的表现

超出LLM长度的知识是如何压缩的

检索到的上下文的总长度,超过了LLM接受的最大长度。MemoRAG设计了一个内存模块:

可以解决的业务场景

意图不明确的query

MemoRAG根据压缩知识的记忆模块,能够推断出隐式查询的潜在意图,通过生成分阶段的答案,例如更具体的答案线索,MemoRAG 弥合了隐式信息需求和检索过程之间的差距。

应对复杂问题的查询

记忆模块压缩的知识,能将数据库中多个步骤的相关信息连接并整合在一起。通过生成指导检索互联数据点的暂存答案,MemoRAG 有效地管理了多跳查询的复杂性。

信息聚合

memoRAG对长文本进行摘要时,记忆模块捕获和综合数据集中的关键点,生成中间阶段的答案,这些答案代表了内容的必要元素,然后用于从原始内容中检索详细信息。所有这些信息都被聚合起来,以生成最终的摘要。

个性化推荐

利用记忆模块存储的全局信息,来分析和理解用户的对话历史,识别和利用关键线索,例如用户的音乐偏好、知识背景、年龄以及可以从过去交互中推断出的其他相关因素。生成高度个性化的推荐。

终身对话搜索

memoRAG利用记忆模块,能够存储多轮对话的完整知识,能填补在每轮对话过程中空白的语义空间。例如:他吃饭了吗? 没有上下文知识,就理解不了指的是谁。







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5