项目简介
revect(Recall Vectors)是一个开源的个人记忆管理工具,旨在帮助用户存储和检索任何信息,如文章、笔记或对话记录。它通过将文本内容转换为向量嵌入(embeddings)并存储在 SQLite 数据库中,实现强大的语义搜索能力。revect 特别强调数据隐私和控制权,用户可以完全在本地运行服务。
主要功能点
- 智能索引: 自动将文本内容分割成小块(chunks),并生成向量嵌入,方便高效存储和检索。支持文档更新。
- 语义搜索: 允许使用自然语言进行模糊搜索,即使不记得确切关键词也能找到相关信息。
- 上下文管理: 提供设置和获取带有特定键的上下文信息的能力。
- 灵活的嵌入模型: 支持使用各种 OpenAI 兼容的嵌入模型(如本地的 Ollama/LM Studio 模型),并在更换模型时自动重新嵌入整个数据库。
- 数据隐私: 所有数据都存储在本地 SQLite 文件中,用户完全掌控自己的数据。
- MCP 支持: 实现 Model Context Protocol (MCP),使 revect 能作为 LLM 客户端(如 AI 助手)的外部记忆和工具提供者。
- 易于部署: 提供 Docker 镜像,简化本地部署过程。
安装步骤
revect 主要通过 Docker 容器进行部署。
-
安装 Docker: 确保你的系统上安装了 Docker。
-
准备 AI 后端: revect 需要一个 AI 后端来生成文本嵌入。你可以使用 OpenAI API,或者本地运行 Ollama, LM Studio 等兼容 OpenAI API 的服务。例如,使用 Ollama 并拉取一个嵌入模型(如 'mxbai-embed-large')。
-
启动 Docker 容器: 运行以下命令启动 revect 容器。请替换 '~/Documents/revect' 为你希望存储数据库文件的本地路径,并根据你选择的 AI 后端配置 'AI_BASE_URL'、'AI_API_KEY'(如果需要)和 'AI_EMBEDDING_MODEL'。'API_SECRET' 是用于保护 revect 服务的密钥。
docker run \ -p 8000:8000 \ -v YOUR_LOCAL_DATA_PATH:/app/data \ -e AI_BASE_URL="YOUR_AI_BACKEND_URL/v1" \ -e AI_API_KEY="YOUR_API_KEY_IF_NEEDED" \ -e AI_EMBEDDING_MODEL="YOUR_EMBEDDING_MODEL_NAME" \ -e AI_EMBEDDING_SIZE="MODEL_EMBEDDING_DIMENSIONS" \ -e API_SECRET="YOUR_CHOSEN_SECRET_KEY" \ --pull always \ --add-host=host.docker.internal:host-gateway \ zachrebuild/revect.io:latest- 'YOUR_LOCAL_DATA_PATH': 替换为你希望存储 revect 数据库和文件的本地目录路径。
- 'YOUR_AI_BACKEND_URL/v1': 替换为你的 AI 后端(如 Ollama 或 LM Studio)的 API 地址。如果你使用本地 Ollama,可能是 'http://host.docker.internal:11434/v1' (在 Docker Desktop for Windows/macOS) 或 'http://172.17.0.1:11434/v1' (在 Linux) 或 'http://localhost:11434/v1' (如果你在宿主机直接运行)。
- 'YOUR_API_KEY_IF_NEEDED': 如果你的 AI 后端需要 API 密钥,请在此填写。使用本地 Ollama 通常不需要。
- 'YOUR_EMBEDDING_MODEL_NAME': 替换为你拉取的嵌入模型名称,例如 'mxbai-embed-large'。
- 'MODEL_EMBEDDING_DIMENSIONS': 替换为你选择的嵌入模型对应的向量维度,例如 '1024' 或 '1536'。
- 'YOUR_CHOSEN_SECRET_KEY': 设置一个安全的密钥,用于保护 revect 的 REST API。MCP 连接通常不需要此密钥。
容器启动后,revect 服务将在本地的 8000 端口运行。
服务器配置(供 MCP 客户端使用)
revect MCP 服务器默认监听 'http://localhost:8000/mcp' 地址(如果使用自定义端口,请替换)。大多数支持 MCP 的 LLM 客户端需要在其配置文件中添加 revect 服务器的信息。所需的主要配置参数包括:
- 服务器名称: 一个用于标识 revect 服务器的独特名称,例如 'revect'。
- 连接方式:
- 如果客户端支持 HTTP/WebSocket 连接,直接提供 MCP 服务器的 URL:'http://localhost:8000/mcp'。
- 如果客户端仅支持 Stdio 连接,通常需要使用 MCP 官方提供的 'mcp-remote' 工具作为代理。客户端的配置将指向运行 'mcp-remote' 的命令和参数,例如:
- 命令 (command): 'npx' 或 'bunx' (取决于你的 Node.js/Bun 环境)
- 参数 (args): '["mcp-remote", "http://localhost:8000/mcp"]'
用户需要在其 MCP 客户端的配置界面或文件中填入这些信息,以便客户端能够发现并连接到 revect 服务器。
基本使用方法
一旦 revect 作为 MCP 服务器连接到你的 LLM 客户端,你就可以通过与 LLM 交互来使用 revect 的功能:
- 保存知识: 直接告诉 LLM "请将这段对话/内容索引到我的记忆库中" 或类似指令。如果 LLM 集成了 revect 的 "saveOrIndex" 工具,它会调用 revect API 将当前对话或你指定的内容保存起来。
- 回忆信息: 当你需要查找过去保存的信息时,向 LLM 提问,例如 "回忆一下我昨天读的那篇关于气候变化的条目" 或 "搜索关于 React 分页组件的代码片段"。如果 LLM 集成了 revect 的 "recall" 工具,它会调用 revect 的语义搜索功能,并将匹配的结果作为上下文提供给 LLM,LLM 再根据这些结果生成回答。
- 获取完整文档: 如果搜索结果只提供了摘要或片段,你可以通过引用文档 ID 请求 LLM 获取完整内容,例如 "请获取 document_id 为 123 的完整文档"。
具体的交互方式取决于你的 LLM 客户端对 MCP 工具的集成程度。
信息
分类
AI与计算