1.安装pgvector和python包

docker run -it --name langchain-postgres -v postgres_data_pgvector_16:/var/lib/postgresql/data -e POSTGRES_DB=langchain_test -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432  --privileged=true  pgvector/pgvector:pg16 postgres   -c log_statement=all

     

python -m pip install --upgrade pip

pip install -U langchain-postgres
pip install sqlalchemy
pip install "psycopg[binary]"
pip install -U psycopg>=3,<4

2.连接数据库

新建数据库langchain

启动vector插件

CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM pg_extension;

这时看到下面就是安装成功了

oid  |extname|extowner|extnamespace|extrelocatable|extversion|extconfig|extcondition|
-----+-------+--------+------------+--------------+----------+---------+------------+
13564|plpgsql|      10|          11|false         |1.0       |NULL     |NULL        |
16718|vector |      10|        2200|true          |0.8.0     |NULL     |NULL        |

3.测试代码

from langchain_community.embeddings import DashScopeEmbeddings
from langchain_core.documents import Document
from langchain_core.embeddings import DeterministicFakeEmbedding
from langchain_postgres import PGEngine, PGVectorStore

import sys
import asyncio
from asyncio import WindowsSelectorEventLoopPolicy
from langchain_postgres import PGEngine

# 解决Windows事件循环兼容性问题
if sys.platform.startswith("win"):
    asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())


# node02换成自己的docker ip
CONNECTION_STRING = "postgresql+psycopg://postgres:postgres@node02:5432/langchain"
engine = PGEngine.from_connection_string(url=CONNECTION_STRING)

# 换成自己的向量模型和纬度
VECTOR_SIZE = 1536
embedding = DashScopeEmbeddings()

#自动创建
TABLE_NAME = "my_doc_collection"

engine.init_vectorstore_table(
    table_name=TABLE_NAME,
    vector_size=VECTOR_SIZE,
)

store = PGVectorStore.create_sync(
    engine=engine,
    table_name=TABLE_NAME,
    embedding_service=embedding,
)

#实际使用换成自己切分好的文档
docs = [
    Document(page_content="Apples and oranges"),
    Document(page_content="Cars and airplanes"),
    Document(page_content="Train")
]

store.add_documents(docs)

query = "I'd like a fruit."
docs = store.similarity_search(query)
print(docs)

4.查看数据库结果

langchain_id                        |content           |embedding                                                                                                                                                                                                                                                      |langchain_metadata|
------------------------------------+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+
97000e12-3a57-40a7-a8b8-5331fd9dbf36|Apples and oranges|[1.2773961,-3.8119419,1.9926234,-0.65778023,0.9027797,-0.88058907,1.0952846,-0.08163016,-0.5714547,-2.0372946,1.7419084,0.4295676,3.4903738,4.551339,0.99045235,-1.0730025,-5.1110754,2.9589496,0.3784245,-0.6525094,-1.4024658,1.583531,1.094792,0.15441023,-0|{}                |
71b038fc-1e75-4811-bade-9b37479fad28|Cars and airplanes|[2.8142788,4.828448,1.0311105,3.0447125,0.08845847,2.6157575,-3.0317905,-0.53470284,-0.6424125,2.0443988,-0.96316963,0.9835554,-0.41734096,-0.10316467,0.55573815,0.9404046,-4.105532,2.3995883,-1.9731925,-0.95084053,1.4931897,1.6949027,2.7257144,0.8192749,|{}                |
28625381-87da-43c5-8aeb-8e79e17df4de|Train             |[1.8491211,-3.3235676,-1.0189413,-1.9547526,3.5162761,-1.4440104,-0.78637695,-1.9052734,0.6786296,4.7135415,-2.5356445,0.2055664,-0.55826825,-4.061849,-0.33162436,-0.430542,0.36775717,-2.252116,-3.3463948,1.1152344,1.6578776,2.1279297,-0.24482219,2.413167|{}                |

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐