赞
踩
通过RAG来增强LLM已经是目前很多的首选,但是最近有一个新的开源项目让大家看到了更好的选择的可能。
今天我们分享一个开源项目,它号称是RAG的下一代技术,让大模型可以拥有个性化的记忆,它就是:mem0
Mem0,前身为 EmbedChain, 是一款由 YC 孵化的开源技术,致力于为 AI 代理提供长期记忆能力。Mem0 旨在为大型语言模型 (LLM) 和 AI 代理提供一个记忆层,从而实现真正个性化的 AI 交互。它允许开发者通过集成长期记忆来增强他们的 AI 代理,从而带来更具适应性和个性化的 AI 体验。Mem0也是YC资助的项目。
简单的说,Mem0 为大语言模型提供了一个智能、自我改进的记忆层,实现了跨应用的个性化 AI 体验。
核心功能包括:
Mem0称自己是 RAG 发展的下一个阶段,相比 RAG 的核心区别:关注实体和实体关系;关注最近、最相关的;上下文连续性;适应性学习;动态更新信息。而普通 RAG 只是单纯的从静态的文档中检索信息。
具体来说,Mem0 提供的记忆实现相比 RAG 具有以下优势:
这些先进的记忆功能使 Mem0 成为开发者创建个性化和上下文感知 AI 应用的强大工具。
Mem0 还提供了开发者友好的 API,安装和使用也很简单。
通过pip安装mem0
代码解读
pip install mem0ai
基本用法:
ini 代码解读 import os from mem0 import Memory os.environ["OPENAI_API_KEY"] = "xxx" # Initialize Mem0 m = Memory() # Store a memory from any unstructured text result = m.add("I am working on improving my tennis skills. Suggest some online courses.", user_id="alice", metadata={"category": "hobbies"}) print(result) # Created memory: Improving her tennis skills. Looking for online suggestions. # Retrieve memories all_memories = m.get_all() print(all_memories) # Search memories related_memories = m.search(query="What are Alice's hobbies?", user_id="alice") print(related_memories) # Update a memory result = m.update(memory_id="m1", data="Likes to play tennis on weekends") print(result) # Get memory history history = m.history(memory_id="m1") print(history)
上述的示例代码展示了如何添加记忆、检索记忆、搜索、更新和获取记忆历史。
注意代码里的metadata, 这里相当于定义了一个schema,让LLM从非结构化数据里提取相关的记忆信息。
高级使用,在面向生成的环境中,可以增加向量数据库比如Qdrant
arduino 代码解读 from mem0 import Memory config = { "vector_store": { "provider": "qdrant", "config": { "host": "localhost", "port": 6333, } }, } m = Memory.from_config(config)
从本质上讲,Mem0 是AI 应用程序和内存存储之间的智能中介。与 LLM 集成后,Mem0 可管理信息的存储、检索和优先级排序。
以下是简化的工作流程:
Mem0 使用先进的矢量存储技术来有效地管理和查询大量数据,确保快速和相关的信息检索。
在源码中可以看到项目包含4个核心模块:embeddings、llms、memory、vector_stores,最重要的就是memory部分,提供对记忆的处理能力。结合前面的快速上手,我们可以看到,mem0的memory部分提供的能力简单点说就是记忆的“增删改查”,具体如下:
sql
代码解读
Store a Memory
Retrieve Memories
Search Memories
Update a Memory
Memory History
Delete Memory
在mem0的文档中还提供了一些例子来方便大家更好的理解其作用,比如个人AI助理、AI旅行助手、客服AI助手等,都包含说明和 示例的代码。
以下是使用mem0来构建一个只能旅游助手的代码。
python 代码解读 import os from openai import OpenAI from mem0 import Memory # Set the OpenAI API key os.environ['OPENAI_API_KEY'] = 'sk-xxx' class PersonalTravelAssistant: def __init__(self): self.client = OpenAI() self.memory = Memory() self.messages = [{"role": "system", "content": "You are a personal AI Assistant."}] def ask_question(self, question, user_id): # Fetch previous related memories previous_memories = self.search_memories(question, user_id=user_id) prompt = question if previous_memories: prompt = f"User input: {question}\n Previous memories: {previous_memories}" self.messages.append({"role": "user", "content": prompt}) # Generate response using GPT-4o response = self.client.chat.completions.create( model="gpt-4o", messages=self.messages ) answer = response.choices[0].message.content self.messages.append({"role": "assistant", "content": answer}) # Store the question in memory self.memory.add(question, user_id=user_id) return answer def get_memories(self, user_id): memories = self.memory.get_all(user_id=user_id) return [m['text'] for m in memories] def search_memories(self, query, user_id): memories = self.memory.search(query, user_id=user_id) return [m['text'] for m in memories] # Usage example user_id = "traveler_123" ai_assistant = PersonalTravelAssistant() def main(): while True: question = input("Question: ") if question.lower() in ['q', 'exit']: print("Exiting...") break answer = ai_assistant.ask_question(question, user_id=user_id) print(f"Answer: {answer}") memories = ai_assistant.get_memories(user_id=user_id) print("Memories:") for memory in memories: print(f"- {memory}") print("-----") if __name__ == "__main__": main()
Mem0 作为一种革命性的AI记忆技术,为构建个性化的AI应用提供了全新的解决方案。Mem0 不仅可以提高AI代理的智能水平,还可以为用户带来更加个性化和人性化的AI体验。相信在不久的将来,Mem0 将会应用到更多的AI应用场景中,为我们带来更加智能和便捷的生活体验。
作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料
包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/996765
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。