网络搜索与向量数据库服务

提供基于LangChain和ChromaDB的网络搜索与向量数据库功能,适用于文档检索和语义相似性搜索。

  • by joao-santillo
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 joao-santillo/web-search-mcp-server

使用说明

基于ChromaDB矢量数据库的Web搜索MCP服务器

此MCP服务器使用LangChain和ChromaDB提供网络搜索和矢量数据库功能的工具。

特性

网页搜索

  • 搜索流行库(LangChain、LlamaIdex、OpenAI)的文档
  • 从网页中提取内容

矢量数据库(ChromaDB)

  • 使用向量嵌入存储和检索文档
  • 执行语义相似性搜索
  • 基于元数据过滤文档
  • 批量操作提高效率

设置

  1. 安装依赖项:
pip install -e .
# or
uv pip install -e .
  1. 创建一个 .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
  1. 运行服务器:
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 .