Skip to main content

sql-pgvector

这个模板使用户能够将pgvector与PostgreSQL结合使用,用于语义搜索和RAG。

它使用PGVector扩展,如RAG empowered SQL cookbook中所示。

环境设置

如果您使用ChatOpenAI作为您的LLM,请确保在您的环境中设置了OPENAI_API_KEY。您可以在chain.py中更改LLM和嵌入模型。

您可以配置以下环境变量以供模板使用(默认值在括号中):

  • POSTGRES_USER(postgres)
  • POSTGRES_PASSWORD(test)
  • POSTGRES_DB(vectordb)
  • POSTGRES_HOST(localhost)
  • POSTGRES_PORT(5432)

如果您没有postgres实例,可以在本地使用docker运行一个:

docker run \
--name some-postgres \
-e POSTGRES_PASSWORD=test \
-e POSTGRES_USER=postgres \
-e POSTGRES_DB=vectordb \
-p 5432:5432 \
postgres:16

以后要重新启动,请使用上面定义的--name

docker start some-postgres

PostgreSQL数据库设置

除了启用pgvector扩展之外,您还需要进行一些设置,才能在SQL查询中运行语义搜索。

为了在您的postgreSQL数据库上运行RAG,您需要为您想要的特定列生成嵌入。

这个过程在RAG empowered SQL cookbook中有介绍,但总体方法包括:

  1. 查询列中的唯一值
  2. 为这些值生成嵌入
  3. 将嵌入存储在单独的列或辅助表中。

使用方法

要使用此包,您首先应该安装LangChain CLI:

pip install -U langchain-cli

要创建一个新的LangChain项目并将其安装为唯一的包,可以执行以下操作:

langchain app new my-app --package sql-pgvector

如果要将其添加到现有项目中,只需运行:

langchain app add sql-pgvector

并将以下代码添加到您的server.py文件中:

from sql_pgvector import chain as sql_pgvector_chain

add_routes(app, sql_pgvector_chain, path="/sql-pgvector")

(可选)现在让我们配置LangSmith。 LangSmith将帮助我们跟踪、监视和调试LangChain应用程序。 LangSmith目前处于私有测试版,您可以在此处注册。 如果您没有访问权限,可以跳过此部分

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project> # 如果未指定,默认为"default"

如果您在此目录中,则可以直接启动LangServe实例:

langchain serve

这将在本地启动FastAPI应用程序,服务器正在http://localhost:8000上运行

我们可以在http://127.0.0.1:8000/docs上查看所有模板 我们可以在http://127.0.0.1:8000/sql-pgvector/playground上访问playground

我们可以通过以下代码访问模板:

from langserve.client import RemoteRunnable

runnable = RemoteRunnable("http://localhost:8000/sql-pgvector")