向量数据库服务

提供基于Qdrant的向量数据库服务,支持REST和gRPC API,适用于机器学习和数据检索场景。

  • by Junjpan
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Junjpan/mcp-rag-test

使用说明

创建矢量数据库并运行MCP服务器 运行Docker与向量数据库交互:

  1. 运行docker桌面并播放与此应用程序相关的容器
  2. 如果您没有为此应用程序设置的容器,请运行以下命令。 用于窗口bash
docker run -p 6333:6333 -p 6334:6334 \
    -v /$(pwd)/qdrant_storage:/qdrant/storage \
    qdrant/qdrant

对于mac或linux终端,或者如果使用Git Bash

docker run -p 6333:6333 -p 6334:6334 \
    -v $(pwd)/qdrant_storage:/qdrant/storage \
    qdrant/qdrant
  1. 运行以下命令以创建或更新矢量数据库,并运行mcp服务器
python mcp_server.py

端口6333 → Qdrant的主要REST API端点。基于HTTP的可读JSON。 转到Qdrant仪表板 http://localhost:6333/dashboard 前往Qdrant收藏 http://localhost:6333/collections

端口6334 → Qdrant的gRPC API终结点。gRPC是来自Google的二进制协议。比REST更快、更高效。您不直接在浏览器中使用它,而是从客户端库(如Python、Node.js或Go)连接到if。

  1. 如果您已经设置了docker-compose.yaml,请运行以下命令,此文件的作用与上面的docker run命令相同[仅适用于您首次设置时]
docker compose up 

运行MCP客户端

备注 如果你想选择工具问候和添加,而不是运行 python mcp_server.py,你应该跑 python simpleMCPserver.py

python simpleMCPClient.py

选择您的抹布或油布工具

停止Qdrant和Docker的正确方法:

  1. 优雅地停止Qdrant容器: 打开终端并运行:
docker stop <qdrant_container_name>

这个命令告诉Qdrant完成任何写入并干净地关闭。

  1. 等待几秒钟以确保所有数据都已刷新到磁盘。

  2. 停止所有容器后,您可以安全地停止Docker Desktop或关闭计算机。

不要:

  • 在容器运行时强制退出Docker Desktop。
  • 在不停止容器的情况下关闭计算机。

漏洞: 现在每次停止docker,我们都必须重建向量数据库,以便能够看到向量数据库中的所有点


使用pyenv设置Python环境 该项目使用pyenv来管理Python版本和虚拟环境。按照以下步骤设置您的环境:

  1. 安装pyenv

按照[pyenv安装|https://github.com/pyenv/pyenv#installation]导游 为您的系统。 对于Windows,使用[pyenv-win|https://github.com/pyenv-win/pyenv-win].

  1. 安装所需的Python版本

该项目配置为使用Python 3.10.4(或根据需要更新到其他版本)。

pyenv install 3.10.4
  1. 设置本地Python版本

在项目文件夹中,设置Python版本:

cd myproject
pyenv local 3.10.4

这将在项目中创建一个.python版本文件。

  1. 创建虚拟环境

如果您安装了pyenv-virtualenv,请创建一个命名环境:

pyenv virtualenv 3.10.4 myproject-env
pyenv local myproject-env

如果你更喜欢内置的venv:

python -m venv venv
source venv/bin/activate   # macOS/Linux
source venv/Scripts/activate    # Windows
  1. 安装依赖项
pip install --upgrade pip
pip install -r requirements.txt
  1. 运行项目
python mcp_server.py

运行数据加载器脚本

该项目包括用于不同文件格式的数据加载器脚本。您可以在根文件夹中以两种方式测试它们:

选项1:直接运行脚本(推荐)

python ./loader/testing/load_csv.py [file_path]
python ./loader/testing/load_json.py [file_path]
python ./loader/testing/load_yaml.py [file_path]
python ./loader/testing/load_markdown.py [file_path]
python ./loader/testing/load_text.py [file_path]

选项2:作为模块运行

python -m loader.testing.load_csv [file_path]
python -m loader.testing.load_json [file_path]
python -m loader.testing.load_yaml [file_path]
python -m loader.testing.load_markdown [file_path]
python -m loader.testing.load_text [file_path]

示例:

# Using default files
python loader/load_csv.py
python loader/load_json.py

# Using custom files
python loader/load_csv.py ./data/my_data.csv
python loader/load_json.py ./data/my_data.json

如何安全地停止Qdrant/Docker(防止数据损坏) 为什么? 如果你突然停止Docker或Qdrant容器(例如在Qdrant运行时关闭Docker桌面或关闭计算机),你就有损坏Qdrant数据库文件的风险。这可能会导致以下错误 OutputTooSmall { expected: 4, actual: 0 } 以及矢量数据的丢失。