使用说明
基于ChromaDB矢量数据库的Web搜索MCP服务器
此MCP服务器使用LangChain和ChromaDB提供网络搜索和矢量数据库功能的工具。
特性
网页搜索
- 搜索流行库(LangChain、LlamaIdex、OpenAI)的文档
- 从网页中提取内容
矢量数据库(ChromaDB)
- 使用向量嵌入存储和检索文档
- 执行语义相似性搜索
- 基于元数据过滤文档
- 批量操作提高效率
设置
- 安装依赖项:
pip install -e .
# or
uv pip install -e .
- 创建一个
.env包含以下变量的文件:
# Serper API for web search
USER_AGENT=Mozilla/5.0
SERPER_API_URL=https://google.serper.dev/search
SERPER_API_KEY=your_serper_api_key
# ChromaDB configuration
CHROMA_PERSIST_DIRECTORY=./chroma_db
EMBEDDING_MODEL_NAME=sentence-transformers/all-MiniLM-L6-v2
# Transport mode (stdio or sse)
TRANSPORT=stdio
- 运行服务器:
python main.py
可用工具
网页搜索
get_docs(query: str, library: str):搜索指定库的文档
矢量数据库(ChromaDB)
add_document_to_vectordb(content: str, metadata: Optional[Dict[str, Any]]):向ChromaDB添加单个文档search_vectordb(query: str, top_k: int, filter_criteria: Optional[Dict[str, Any]]):搜索矢量数据库delete_document_from_vectordb(document_id: str):按ID删除文档batch_add_documents_to_vectordb(documents: List[Dict[str, Any]]):批量添加多个文档create_retriever(search_type: str, search_kwargs: Optional[Dict[str, Any]]):为矢量数据库创建检索器
示例用法
# Add a document to the vector database
doc_id = await add_document_to_vectordb(
content="This is a sample document about ChromaDB vector databases.",
metadata={"source": "example", "category": "vector_db"}
)
# Search for similar documents
results = await search_vectordb(
query="How do vector databases work?",
top_k=2,
filter_criteria={"category": "vector_db"}
)
# Delete a document
status = await delete_document_from_vectordb(document_id=doc_id)
# Add multiple documents at once
doc_ids = await batch_add_documents_to_vectordb([
{
"content": "Document 1 content",
"metadata": {"source": "example", "category": "general"}
},
{
"content": "Document 2 content",
"metadata": {"source": "example", "category": "specific"}
}
])
发展
- 格式代码:
black .和isort . - 棉绒编码:
ruff check . - 类型检查:
mypy .
