Movatterモバイル変換


[0]ホーム

URL:


Skip to main content
OurBuilding Ambient Agents with LangGraph course is now available on LangChain Academy!
Open In ColabOpen on GitHub

PGVecto.rs

This notebook shows how to use functionality related to the Postgres vector database (pgvecto.rs).

%pip install"pgvecto_rs[sdk]" langchain-community
from typingimport List

from langchain_community.document_loadersimport TextLoader
from langchain_community.embeddings.fakeimport FakeEmbeddings
from langchain_community.vectorstores.pgvecto_rsimport PGVecto_rs
from langchain_core.documentsimport Document
from langchain_text_splittersimport CharacterTextSplitter
loader= TextLoader("../../how_to/state_of_the_union.txt")
documents= loader.load()
text_splitter= CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs= text_splitter.split_documents(documents)

embeddings= FakeEmbeddings(size=3)

Start the database with theofficial demo docker image.

! docker run--name pgvecto-rs-demo-e POSTGRES_PASSWORD=mysecretpassword-p5432:5432-d tensorchord/pgvecto-rs:latest

Then contruct the db URL

## PGVecto.rs needs the connection string to the database.
## We will load it from the environment variables.
import os

PORT= os.getenv("DB_PORT",5432)
HOST= os.getenv("DB_HOST","localhost")
USER= os.getenv("DB_USER","postgres")
PASS= os.getenv("DB_PASS","mysecretpassword")
DB_NAME= os.getenv("DB_NAME","postgres")

# Run tests with shell:
URL="postgresql+psycopg://{username}:{password}@{host}:{port}/{db_name}".format(
port=PORT,
host=HOST,
username=USER,
password=PASS,
db_name=DB_NAME,
)

Finally, create the VectorStore from the documents:

db1= PGVecto_rs.from_documents(
documents=docs,
embedding=embeddings,
db_url=URL,
# The table name is f"collection_{collection_name}", so that it should be unique.
collection_name="state_of_the_union",
)

You can connect to the table laterly with:

# Create new empty vectorstore with collection_name.
# Or connect to an existing vectorstore in database if exists.
# Arguments should be the same as when the vectorstore was created.
db1= PGVecto_rs.from_collection_name(
embedding=embeddings,
db_url=URL,
collection_name="state_of_the_union",
)

Make sure that the user is permitted to create a table.

Similarity search with score

Similarity Search with Euclidean Distance (Default)

query="What did the president say about Ketanji Brown Jackson"
docs: List[Document]= db1.similarity_search(query, k=4)
for docin docs:
print(doc.page_content)
print("======================")

Similarity Search with Filter

from pgvecto_rs.sdk.filtersimport meta_contains

query="What did the president say about Ketanji Brown Jackson"
docs: List[Document]= db1.similarity_search(
query, k=4,filter=meta_contains({"source":"../../how_to/state_of_the_union.txt"})
)

for docin docs:
print(doc.page_content)
print("======================")

Or:

query="What did the president say about Ketanji Brown Jackson"
docs: List[Document]= db1.similarity_search(
query, k=4,filter={"source":"../../how_to/state_of_the_union.txt"}
)

for docin docs:
print(doc.page_content)
print("======================")

Related


[8]ページ先頭

©2009-2025 Movatter.jp