## PGVecto.rs needs the connection string to the database.## We will load it from the environment variables.importosPORT=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,)# The pgvectors Module will try to create a table with the name of the collection.# So, make sure that the collection name is unique and the user has the permission to create a table.COLLECTION_NAME="state_of_the_union_test"db=PGVecto_rs.from_documents(embedding=embeddings,documents=docs,collection_name=COLLECTION_NAME,db_url=URL,)
查询索引
最后,我们可以在 LangChain 中检索最相似的文本片段:
query="What is pgvecto.rs"docs_with_score=db.similarity_search_with_score(query)fordoc,scoreindocs_with_score:print("-"*80)print("Score: ",score)print(doc.page_content)print("-"*80)
输出结果如下:
Created a chunk of size 1181, which is longer than the specified 1000
--------------------------------------------------------------------------------
Score: 0.25059962
# Overview
An introduction to the pgvecto.rs.
## What is pgvecto.rs
pgvecto.rs is a Postgres extension that provides vector similarity search functions. It is written in Rust and based on [pgrx](https://github.com/tcdi/pgrx). It is currently in the beta status, we invite you to try it out in production and provide us with feedback. Read more at [📝our launch blog](https://modelz.ai/blog/pgvecto-rs).
## Why use pgvecto.rs
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Score: 0.29536954
- 💃 **Easy to use**: pgvecto.rs is a Postgres extension, which means that you can use it directly within your existing database. This makes it easy to integrate into your existing workflows and applications.
- 🔗 **Async indexing**: pgvecto.rs's index is asynchronously constructed by the background threads and does not block insertions and always ready for new queries.
- 🥅 **Filtering**: pgvecto.rs supports filtering. You can set conditions when searching or retrieving points. This is the missing feature of other postgres extensions.
- 🧮 **Quantization**: pgvecto.rs supports scalar quantization and product qutization up to 64x.
- 🦀 **Rewrite in Rust**: Rust's strict compile-time checks ensure memory safety, reducing the risk of bugs and security issues commonly associated with C extensions.
## Comparison with pgvector
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Score: 0.35845917
More details at [📝`pgvecto.rs` vs. pgvector](/faqs/comparison-pgvector.md).
## Quick start
For new users, we recommend using the [Docker image](https://hub.docker.com/r/tensorchord/pgvecto-rs) to get started quickly.
...