MCP矢量数据库服务器
一种模型上下文协议(MCP)服务器,提供具有自动文本嵌入和相似性搜索功能的矢量数据库功能。该服务器使AI应用程序能够使用语义相似性存储、索引和检索文本文档。
我开发了这个用于存储用户交互的工具,因为它是上下文工程所必需的。
特性
- 文本存储:使用自动嵌入生成功能存储文本文档
- 相似性搜索:使用向量搜索查找语义相似的文档
- 多个嵌入提供程序:支持OpenAI和句子转换器
- 矢量数据库支持:ChromaDB与可扩展适配器模式集成
- 多种运输方式:STDIO、SSE和流式HTTP支持
- 元数据支持:使用自定义元数据存储和筛选文档
- 自动收款管理:自动创建和管理收藏
安装
先决条件
- Python 3.8+
- 点
设置
- 克隆存储库:
git clone
cd mcp-vectordb-server- 安装依赖项:
基本用法:
pip install -r requirements.txt对于开发(包括测试和linting工具):
pip install -r requirements-dev.txt- 配置环境变量:
cp .env.example .env
# Edit .env with your configuration用法
启动服务器
使用主入口点运行服务器:
python main.py服务器支持三种传输模式:
- 工作室:直接过程通信的标准输入/输出
- 上海证券交易所:用于基于web的流媒体的服务器发送事件
- 流式HTTP:基于HTTP的流媒体协议
可用工具
服务器提供两个主要的MCP工具:
1. store_text
使用自动嵌入生成功能存储文本文档。
参数:
text(必填):要存储的文本内容collection(可选):集合名称(默认:“documents”)metadata(可选):自定义元数据字典document_id(可选):自定义文档ID
2. similarity_search
执行语义相似性搜索以查找相关文档。
参数:
query(必填):搜索查询文本collection(可选):要搜索的集合(默认:“文档”)top_k(可选):要返回的结果数(1-100,默认值:10)filters(可选):元数据筛选器include_scores(可选):包括相似性得分(默认值:true)include_metadata(可选):包含文档元数据(默认值:true)min_score(可选):最小相似性得分阈值(0.0-1.0)
客户示例
该存储库包括不同传输模式的示例客户端:
STDIO客户端
python example_mcp_client_stdio.pySSE客户端
python example_mcp_client_sse.py流式HTTP客户端
python example_mcp_client_streamable_http.py配置选项
矢量数据库提供程序
目前支持:
- ChromaDB:具有持久性的本地矢量数据库
嵌入提供者
- OpenAI:使用OpenAI的嵌入API(需要API密钥)
- 模型: text-embedding-ada-002, text-embedding-3-small, text-embedding-3-large
- 句子转换:本地嵌入模型(不需要API密钥)
- 模型: all-MiniLM-L6-v2, all-mpnet-base-v2等等。
运输方式
- 标准:直接过程沟通
- SSE:服务器发送的事件(可在以下网址访问
http://127.0.0.1:8000/sse) - 可流式传输http:HTTP流媒体(可在以下网址访问
http://127.0.0.1:8000/mcp)
添加新的矢量数据库适配器
- 在中创建新适配器
src/mcp_vectordb/adapters/ - 实施
VectorDBAdapter接口来自base.py - 在中注册适配器
factory.py - 更新配置以支持新提供程序
添加新的嵌入提供程序
- 实施
EmbeddingService接口在core/embedding.py - 在中更新服务工厂
services.py - 在中添加配置选项
config/config.py
待办事项列表
- 结合BM25和矢量结果以提供准确性
- 除了相似性搜索结果外,还使用LLM返回BM25和矢量搜索结果的响应
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
