快速安装和使用pgvector
1.安装pgvector和python包。新建数据库langchain。这时看到下面就是安装成功了。启动vector插件。
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|{} |
更多推荐
所有评论(0)