认识Memoripy:一个为AI应用带来真实内存功能的Python库

2024年11月18日 由 neo 发表 167 0

人工智能系统在长时间的交互过程中,往往难以维持有意义的上下文,这对聊天机器人、虚拟助手等应用来说是一大挑战,因为保持对话的连贯性至关重要。传统的AI模型大多以无状态方式运行,只关注当前的输入,而忽略了之前交流的连续性。这种缺乏有效记忆的特点,使得交互变得支离破碎、缺乏一致性,从而阻碍了构建真正吸引人且具备上下文敏感能力的AI系统。


QQ截图20241118171423

为了解决这一问题,我们介绍Memoripy——一个为AI应用赋予真实记忆功能的Python库。Memoripy通过为AI系统提供结构化记忆,解决了保持会话上下文的问题,使它们能够有效存储、回忆,并基于先前的交互进行拓展。它提供了短期和长期的记忆存储功能,让AI系统既能保留近期交互的上下文,又能在长期内保留重要信息。

Memoripy以类似人类认知的方式构建记忆,优先考虑近期事件并保留关键信息,从而确保交互随着时间的推移仍能保持相关性和连贯性。它将记忆组织成短期和长期簇,使得近期交互可以被优先检索,同时保留重要的历史交互以供将来使用。这既防止了AI因过多数据而不堪重负,又确保了相关信息的可访问性。

此外,Memoripy还实施了语义聚类,将相似记忆分组以促进有效的上下文检索。这一功能使AI系统能够快速识别和关联相关记忆,从而提高响应质量。同时,它还采用了记忆衰减和增强机制,即较不重要的记忆逐渐淡化,而被频繁访问的记忆得到强化,这反映了人类记忆的原理。

Memoripy的设计特别强调了本地存储,使开发者可以完全在本地基础设施上处理记忆操作。这不仅减少了隐私问题,还为与本地托管的语言模型以及OpenAI、Ollama等外部服务的集成提供了灵活性。

以下是一个将Memoripy集成到AI应用中的示例:

from memoripy import MemoryManager, JSONStorage

def main():
# Replace 'your-api-key' with your actual OpenAI API key
api_key = "your-key"
if not api_key:
raise ValueError("Please set your OpenAI API key.")

# Define chat and embedding models
chat_model = "openai" # Choose 'openai' or 'ollama' for chat
chat_model_name = "gpt-4o-mini" # Specific chat model name
embedding_model = "ollama" # Choose 'openai' or 'ollama' for embeddings
embedding_model_name = "mxbai-embed-large" # Specific embedding model name

# Choose your storage option
storage_option = JSONStorage("interaction_history.json")

# Initialize the MemoryManager with the selected models and storage
memory_manager = MemoryManager(
api_key=api_key,
chat_model=chat_model,
chat_model_name=chat_model_name,
embedding_model=embedding_model,
embedding_model_name=embedding_model_name,
storage=storage_option
)

# New user prompt
new_prompt = "My name is Khazar"

# Load the last 5 interactions from history (for context)
short_term, _ = memory_manager.load_history()
last_interactions = short_term[-5:] if len(short_term) >= 5 else short_term

# Retrieve relevant past interactions, excluding the last 5
relevant_interactions = memory_manager.retrieve_relevant_interactions(new_prompt, exclude_last_n=5)

# Generate a response using the last interactions and retrieved interactions
response = memory_manager.generate_response(new_prompt, last_interactions, relevant_interactions)

# Display the response
print(f"Generated response:\n{response}")

# Extract concepts for the new interaction
combined_text = f"{new_prompt} {response}"
concepts = memory_manager.extract_concepts(combined_text)

# Store this new interaction along with its embedding and concepts
new_embedding = memory_manager.get_embedding(combined_text)
memory_manager.add_interaction(new_prompt, response, new_embedding, concepts)

if __name__ == "__main__":
main()

在该脚本中,MemoryManager根据指定的聊天和嵌入模型以及存储选项进行初始化。当处理一个新的用户提示时,系统会检索相关的过去交互,以生成上下文上合适的响应。然后,该交互连同其嵌入和提取的概念一起存储起来,以供将来参考。

Memoripy为构建更具上下文感知的AI系统提供了重要进展。它能够保留和回忆相关信息,使得开发虚拟助手、会话代理和客户服务系统成为可能,这些系统能够提供更一致和个性化的互动。例如,使用Memoripy的虚拟助手可以记住用户的偏好或之前请求的细节,从而提供更量身定制的响应。初步评估显示,包含Memoripy的AI系统在用户满意度方面表现更佳,能够生成更连贯、上下文上适当的响应。

此外,Memoripy对本地存储的重视对隐私敏感的应用至关重要,因为它允许数据被安全地处理,而无需依赖外部服务器。

总之,Memoripy通过提供真实记忆功能,提升了AI系统的上下文保持和连贯性,代表了向更复杂AI交互迈出的重要一步。它以与人类认知过程非常相似的方式构建记忆,为AI系统铺平了道路,使其能够根据累积的用户互动进行调整,并提供更个性化、具有上下文感知的体验。这个库为开发者提供了必要的工具,使AI不仅能处理输入,还能有意义地从交互中学习。

文章来源:https://www.marktechpost.com/2024/11/17/meet-memoripy-a-python-library-that-brings-real-memory-capabilities-to-ai-applications/
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消