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中有介绍,但总体方法包括:
- 查询列中的唯一值
- 为这些值生成嵌入
- 将嵌入存储在单独的列或辅助表中。
使用方法
要使用此包,您首先应该安装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")