PingKai Logo下载

向量搜索示例

本示例演示如何使用 TiDB 和本地嵌入模型构建语义搜索应用。它通过向量搜索,根据含义(而不仅仅是关键字)查找相似项。

该应用使用 Ollama 进行本地嵌入生成,使用 Streamlit 构建 Web UI,并使用 pytidb(TiDB 官方 Python SDK)搭建 RAG 流程。

Semantic search with vector embeddings

基于向量嵌入的语义搜索

前置条件

在开始之前,请确保你具备以下条件:

  • Python (>=3.10):安装 Python 3.10 或以上版本。
  • TiDB Cloud Starter 实例:你可以在 TiDB Cloud 上创建免费的 TiDB Cloud Starter 实例。
  • Ollama:从 Ollama 安装。

运行方法

步骤 1. 使用 Ollama 启动嵌入服务

拉取嵌入模型:

ollama pull mxbai-embed-large

验证嵌入服务是否正在运行:

curl http://localhost:11434/api/embed -d '{
  "model": "mxbai-embed-large",
  "input": "Llamas are members of the camelid family"
}'

步骤 2. 克隆仓库

git clone https://github.com/pingcap/pytidb.git
cd pytidb/examples/vector_search/

步骤 3. 安装所需依赖并配置环境

python -m venv .venv
source .venv/bin/activate
pip install -r reqs.txt

步骤 4. 设置环境变量

  1. TiDB Cloud 控制台中,进入 My TiDB 页面,然后点击目标 TiDB Cloud Starter 实例名称,进入其概览页面。

  2. 点击右上角的 Connect。会弹出连接对话框,显示连接参数。

  3. 根据连接参数设置环境变量,如下所示:

    cat > .env <<EOF
    TIDB_HOST={gateway-region}.prod.aws.tidbcloud.com
    TIDB_PORT=4000
    TIDB_USERNAME={prefix}.root
    TIDB_PASSWORD={password}
    TIDB_DATABASE=pytidb_vector_search
    EOF

步骤 5. 运行 Streamlit 应用

streamlit run app.py

在浏览器中访问 http://localhost:8501

相关资源