在构建高级 AI 应用(如智能助手、个性化推荐系统)时,让 AI 具备 长期记忆 是提升用户体验的关键。传统的记忆库主要处理文本信息,但在许多场景中,图像本身携带了远超文字的丰富信息。例如,一张家庭聚会的照片、一次旅行的风景照,或是一张产品设计的草图。
Viking 的「图文记忆库」正是为此而生。它结合了 Viking 记忆库 的结构化文本记忆能力和多模态模型的理解能力,旨在为开发者提供一套完整的、端到端的图文记忆管理方案。
通过本实践,您将掌握如何构建一个系统,实现以下目标:
图文记忆库的工作流程:
接下来,我们将分步详解如何从 0 到 1 实现这套图文记忆系统。
要开始使用图文记忆能力,首先需要创建一个特殊类型的记忆库。在控制台页面上,选择创建多模态文本记忆库。
通过 add_session 接口写入图文会话,支持 response api 与 context api 两种格式上传图文会话。
关键参数 store_file,设置为 True 则提取并保留原始图片,检索时能够带回;设置为 False 则只理解图片内容并不保存图片。默认为 False。
Python SDK 示例:
import os import time from vikingdb.memory import VikingMem from vikingdb import APIKey API_KEY = os.getenv("MEMORY_API_KEY", "your_key") client = VikingMem( host = "api-knowledgebase.mlp.cn-beijing.volces.com", region = "cn-beijing", auth= APIKey(api_key=API_KEY), scheme = "http", ) collection = client.get_collection( collection_name="multimodal_collection", # 替换为你的记忆库名称 project_name="default" ) def add_session(): now_ts = int(time.time() * 1000) result = collection.add_session( session_id="session_001", messages= [{"role": "user", "content": [{"type": "image_url", "image_url": {"url": "https://huabei-2102608324.tos-cn-beijing.volces.com/dog.jpeg"}}, {"type": "text", "text": "我今天刚养了一只宠物,看它可爱吗?"}]}, {"role": "assistant", "content": "这也太可爱了吧。希望你们相处的愉快!"}], metadata = { "default_user_id": "user1", "default_user_name": "XiaoMing", "default_assistant_id": "assistant_01", "default_assistant_name": "Robot", "time": now_ts, "store_file": True, } ) return result if __name__ == "__main__": print("Viking Memory Add Session Messages Example") add_session()
如果记忆与图片相关联,则会返回 10 分钟临时可访问的图片链接。
Python SDK 示例:
import os import time from vikingdb.memory import VikingMem from vikingdb import APIKey API_KEY = os.getenv("MEMORY_API_KEY", "your_key") client = VikingMem( host = "api-knowledgebase.mlp.cn-beijing.volces.com", region = "cn-beijing", auth= APIKey(api_key=API_KEY), scheme="http", ) # 获取记忆库集合 collection = client.get_collection( collection_name="multimodal_collection", # 用您的记忆库名称替代 project_name="default" ) query = "你还记得我最近养了只什么动物" filter = { "user_id": "user1", "memory_type": ["sys_event_v1"] } # 获取会话信息 result = collection.search_memory( query=query, filter=filter, limit=10 ) # 获取会话信息 result = collection.search_event_memory( query=query, filter=filter, limit=10 ) print("\n=== 格式化结果 ===") print(json.dumps(result, indent=2, ensure_ascii=False))