Promptise Foundry内存与向量存储:ChromaDB集成与语义缓存优化

Promptise Foundry内存与向量存储:ChromaDB集成与语义缓存优化

【免费下载链接】Foundry The foundation layer for agentic intelligence. 【免费下载链接】Foundry 项目地址: https://gitcode.com/gh_mirrors/de/Foundry

Promptise Foundry是构建智能代理的基础框架,提供了强大的内存管理和向量存储能力。通过ChromaDB集成与语义缓存优化,开发者可以轻松实现代理的上下文感知和高效数据检索,为AI应用提供快速、准确的记忆支持。

为什么内存管理对AI代理至关重要?

在AI代理开发中,内存管理是决定代理智能程度的关键因素之一。一个能够有效存储和检索信息的代理,可以:

  • 记住用户偏好和历史对话
  • 跨会话保持上下文连贯性
  • 快速访问相关知识和数据
  • 减少重复计算,提高响应速度

Promptise Foundry提供了全面的内存解决方案,包括向量存储和语义缓存,让你的AI代理拥有高效、智能的"记忆力"。

Promptise Foundry内存架构示意图

ChromaDB集成:本地向量存储的强大功能

ChromaDB是一个轻量级、本地优先的向量数据库,专为AI应用设计。在Promptise Foundry中,ChromaDB集成提供了以下核心优势:

  • 语义搜索:不仅仅是关键词匹配,而是理解内容含义
  • 本地持久化:数据存储在本地,保护隐私,降低延迟
  • 自动嵌入生成:无需手动处理文本向量化
  • 多用户隔离:支持按用户ID隔离内存数据

快速开始:配置ChromaDB内存提供器

from promptise.memory import ChromaProvider

# 创建持久化的ChromaDB内存提供器
memory = ChromaProvider(
    collection_name="agent_memory",
    persist_directory=".promptise/chroma",
)

这段简单的代码创建了一个使用ChromaDB的内存提供器,数据将持久化存储在.promptise/chroma目录中,确保代理重启后数据不丢失。

与build_agent无缝集成

通过build_agent()函数,可以轻松将ChromaDB内存集成到你的AI代理中:

from promptise import build_agent
from promptise.config import HTTPServerSpec

agent = await build_agent(
    servers={"tools": HTTPServerSpec(url="http://localhost:8000/mcp")},
    model="openai:gpt-5-mini",
    memory=memory,  # 注入ChromaDB内存提供器
    memory_auto_store=True,  # 自动存储每次交互
)

启用memory_auto_store=True后,代理将自动把每次对话内容存储到ChromaDB中,无需手动调用存储方法。

语义缓存优化:提升代理响应速度

语义缓存是Promptise Foundry的另一项强大功能,它通过以下方式优化代理性能:

  • 智能结果缓存:基于语义相似性缓存和检索结果
  • 减少API调用:避免对相同或相似查询重复调用LLM
  • 降低延迟:缓存结果可立即返回,无需重新计算
  • 用户隔离:确保缓存内容按用户ID隔离,保护隐私

语义缓存的工作原理

当代理接收到用户查询时,系统会首先在语义缓存中搜索相似的历史查询。如果找到足够相似的查询且结果仍然有效,系统将直接返回缓存结果,跳过LLM调用过程。这不仅加快了响应速度,还显著降低了API成本。

在多用户系统中使用语义缓存

在多用户环境中,语义缓存会自动按用户ID进行隔离,确保用户只能访问自己的缓存数据:

# 多用户环境下的语义缓存自动隔离
from promptise.cache import SemanticCache

agent = await build_agent(
    ...,
    cache=SemanticCache(),  # 启用语义缓存
)

# Alice的请求 - 只能访问自己的缓存
await agent.chat("我的项目进度如何?", session_id="alice-session", caller=alice)

# Bob的请求 - 完全隔离的缓存空间
await agent.chat("我的项目进度如何?", session_id="bob-session", caller=bob)

内存范围:共享与按用户隔离

Promptise Foundry提供两种内存隔离模式,以适应不同的应用场景:

共享内存 (SHARED)

适用于公共知识库、常见问题解答等场景,所有用户共享相同的内存池:

from promptise.memory import InMemoryProvider, MemoryScope

# 共享内存池
shared_memory = InMemoryProvider(scope=MemoryScope.SHARED)

按用户隔离内存 (PER_USER)

适用于需要用户数据隔离的场景,如个人助理、多租户应用等:

# 按用户隔离的内存
user_memory = InMemoryProvider(scope=MemoryScope.PER_USER)

# 存储用户特定数据
await user_memory.add("Alice的偏好设置", user_id="alice")
await user_memory.add("Bob的偏好设置", user_id="bob")

# 搜索时自动隔离
alice_data = await user_memory.search("偏好设置", user_id="alice")

在PER_USER模式下,如果调用内存操作时未指定user_id,系统将抛出MemoryIsolationError,确保数据不会意外泄露。

内存安全:防范注入攻击

Promptise Foundry内置了内存内容 sanitization 机制,保护代理免受潜在的提示注入攻击:

  • 截断过长内容(默认2000字符)
  • 移除已知的提示注入模式(如SYSTEM:, [INST]等)
  • 使用<memory_context>围栏包装注入内容
  • 明确指示代理将内容视为事实上下文,而非指令

这些安全措施确保即使内存中包含恶意内容,也不会影响代理的正常行为。

实际应用示例:构建具有长期记忆的分析代理

下面是一个完整示例,展示如何构建一个具有ChromaDB内存和语义缓存的数据分析代理:

import asyncio
from promptise import build_agent
from promptise.config import HTTPServerSpec
from promptise.memory import ChromaProvider
from promptise.observability_config import ObservabilityConfig, TransporterType

async def main():
    # 创建ChromaDB内存提供器
    memory = ChromaProvider(
        collection_name="analyst_memory",
        persist_directory=".promptise/chroma",
    )
    
    # 构建具有内存和缓存的代理
    agent = await build_agent(
        servers={
            "database": HTTPServerSpec(url="http://localhost:8080/mcp"),
            "files": HTTPServerSpec(url="http://localhost:8081/mcp"),
        },
        model="openai:gpt-5-mini",
        instructions=(
            "你是一名高级数据分析师。使用可用工具查询数据库,"
            "分析数据并生成清晰的报告。始终引用数据来源。"
        ),
        memory=memory,
        memory_auto_store=True,  # 自动存储对话
        cache=True,  # 启用语义缓存
    )
    
    # 首次查询 - 无缓存,将存储结果
    result = await agent.ainvoke({
        "messages": [{"role": "user", "content": "分析Q3各地区收入情况"}]
    })
    print(result["messages"][-1].content)
    
    # 相似查询 - 将使用缓存结果
    result = await agent.ainvoke({
        "messages": [{"role": "user", "content": "Q3各区域的销售业绩如何"}]
    })
    print(result["messages"][-1].content)
    
    await agent.shutdown()

asyncio.run(main())

总结:提升AI代理智能的关键步骤

通过ChromaDB集成和语义缓存优化,你可以为AI代理构建强大的记忆系统:

  1. 选择合适的内存提供器:开发测试用InMemoryProvider,生产环境用ChromaProvider
  2. 配置持久化存储:使用persist_directory确保数据不丢失
  3. 启用自动存储:设置memory_auto_store=True简化内存管理
  4. 开启语义缓存:通过cache=True减少重复计算
  5. 实施用户隔离:对多用户应用使用MemoryScope.PER_USER

这些功能不仅提升了代理的智能水平,还优化了性能和安全性,为构建生产级AI应用提供了坚实基础。

要了解更多关于Promptise Foundry内存管理的细节,请参阅官方文档:docs/core/memory.md

【免费下载链接】Foundry The foundation layer for agentic intelligence. 【免费下载链接】Foundry 项目地址: https://gitcode.com/gh_mirrors/de/Foundry

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值