Parquet MCP 服务器是一个功能强大的 MCP(模型控制协议)服务器,提供用于执行网络搜索和查找相似内容的工具。该服务器专为 Claude Desktop 设计,可助力应用程序实现网络搜索功能,还能根据搜索查询找到类似内容。
可自动通过 Smithery 安装 Parquet MCP Server for Claude Desktop:
npx -y @smithery/cli install @DeepSpringAI/parquet_mcp_server --client claude
git clone ...
cd parquet_mcp_server
uv venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # macOS/Linux
pip install -r requirements.txt
创建一个包含以下内容的 .env
文件:
DB_HOST=your_database_host
DB_PORT=your_database_port
DB_NAME=your_database_name
DB_USER=your_database_user
DB_PASSWORD=your_database_password
OPENAI_API_KEY=your_openai_api_key
创建一个包含以下内容的 config.json
文件:
{
"vector_db": {
"type": "postgres",
"params": {
"host": "${DB_HOST}",
"port": "${DB_PORT}",
"database": "${DB_NAME}",
"user": "${DB_USER}",
"password": "${DB_PASSWORD}"
}
},
"openai": {
"api_key": "${OPENAI_API_KEY}"
}
}
uvicorn server.main:app --reload
此服务器提供了多个实用工具,可执行不同操作:
parquet_mcp web_search
:对网页内容进行分析和存储。parquet_mcp vector_search
:根据向量相似度进行搜索。parquet_mcp config
:管理配置文件。parquet_mcp db
:管理 PostgreSQL 数据库。pip install -r requirements-test.txt
pytest tests/
要在 PostgreSQL 中执行向量相似度搜索,可以使用以下函数:
-- 创建向量相似度搜索的函数
CREATE OR REPLACE FUNCTION match_web_search(
query_embedding vector(1024), -- 调整后的向量大小
match_threshold float,
match_count int -- 用户定义的结果数量限制
)
RETURNS TABLE (
id bigint,
metadata jsonb,
text TEXT, -- 添加文本列到结果中
date TIMESTAMP, -- 使用日期列代替created_at
similarity float
)
LANGUAGE plpgsql
AS $$
BEGIN
RETURN QUERY
SELECT
web_search.id,
web_search.metadata,
web_search.text, -- 返回段落的完整文本
web_search.date, -- 返回日期时间戳
1 - (web_search.embedding <=> query_embedding) as similarity
FROM web_search
WHERE 1 - (web_search.embedding <=> query_embedding) > match_threshold
ORDER BY web_search.date DESC, -- 按日期降序排序( newest 先)
web_search.embedding <=> query_embedding -- 按相似度排序
LIMIT match_count; -- 根据用户输入限制结果数量
END;
$$;
该函数允许您在 PostgreSQL 数据库中执行向量相似度搜索,返回满足指定相似度阈值的结果,并根据用户输入限制结果数量。结果按日期和相似度排序。
CREATE TABLE web_search (
id SERIAL PRIMARY KEY,
text TEXT,
metadata JSONB,
embedding VECTOR(1024),
-- 该字段将自动更新
date TIMESTAMP DEFAULT NOW()
);
此表用于存储网络搜索的结果,包括段落文本、元数据和向量表示。