article
README
🚀 MCP文档搜索系统
这是一个向量搜索系统,借助MongoDB Atlas向量搜索和Voyage AI嵌入技术实现文档检索。包含的示例数据适用于Atlas向量搜索 !
✨ 主要特性
- 对带有分层标题的Markdown文档进行摄取和分块处理。
- 利用Voyage AI的上下文嵌入API生成嵌入向量。
- 将文档和嵌入向量以父子关系存储在MongoDB中。
- 提供FastMCP服务器,用于语义文档搜索。
- 支持可配置的向量维度和分块策略。
可用的MCP工具
文档搜索服务器提供以下工具:
- search_documents_vector(query: str, limit: int = 5)
- 主要的搜索方法,使用向量相似度进行搜索。
- 返回带有元数据和相似度分数的文档块。
- 最适合基于语义或含义的查询。
- search_documents_lexicaly(query: str, limit: int = 1)
- 备用搜索方法,使用词法/文本匹配进行搜索。
- 返回带有搜索分数的完整父文档。
- 当向量搜索未找到合适匹配时很有用。
- get_parent_document(parent_id: str)
- 通过ID检索完整的父文档。
- 返回原始内容和文件路径。
- 在搜索后使用,以获取文档块的完整上下文。

📦 安装指南
前提条件
- Python 3.10+
- 启用向量搜索的MongoDB Atlas集群
- Voyage AI API密钥
安装步骤
- 克隆仓库:
git clone https://github.com/patw/avs-document-search.git
cd avs-document-search
- 安装依赖项:
pip install -r requirements.txt
- 根据
sample.env文件创建.env文件,并填入你的凭证信息。
💻 使用示例
基础用法
- 摄取
docs/目录下的文档:
python ingest_docs.py
- 运行搜索服务器:
python avs-mcp.py
运行搜索服务器主要是验证你的MongoDB URI是否正确,你需要将这个MCP服务器接入到像Claude Desktop这样的MCP客户端中。以下是一个示例配置:
{
"mcpServers": {
"Atlas Vector Search Docs": {
"command": "uv",
"args": [
"run",
"--with",
"fastmcp, pymongo, requests",
"fastmcp",
"run",
"<path to>/avs-docs-mcp/avs-mcp.py"
]
}
}
}
📚 详细文档
配置
复制sample.env文件为.env文件,并进行编辑以配置以下内容:
- MongoDB连接字符串
- 数据库和集合名称
- Voyage AI API密钥
- 向量维度(默认为256)
未来改进方向
- (当MongoDB 8.1在Atlas上正式发布时)使用
$rankFusion实现结合向量和文本搜索的混合搜索。 - 通过Docling支持更多文件格式(如PDF、Word等)。
贡献
欢迎提交拉取请求!对于重大更改,请先开启一个问题进行讨论。
作者
Pat Wendorf
pat.wendorf@mongodb.com
GitHub: patw
微信扫一扫