Skip to main content

llama-index vector_stores nile integration

Project description

Nile Vector Store (PostgreSQL)

This integration makes it possible to use Nile - Postgres re-engineered for multi-tenant applications as a vector store in LlamaIndex.

What is Nile?

Nile is a Postgres database that enables all database operations per tenant including auto-scaling, branching, and backups, with full customer isolation.

Multi-tenant RAG applications are increasingly popular, since they provide security and privacy while using large language models.

However, managing the underlying Postgres database is not straightforward. DB-per-tenant is expensive and complex to manage, while shared-DB has security and privacy concerns, and also limits the scalability and performance of the RAG application. Nile re-engineered Postgres to deliver the best of all worlds - the isolation of DB-per-tenant, at the cost, efficiency and developer experience of a shared-DB.

Storing millions of vectors in a shared-DB can be slow and require significant resources to index and query. But if you store 1000 tenants in Nile's virtual tenant databases, each with 1000 vectors, this can be quite manageable. Especially since you can place larger tenants on their own compute, while smaller tenants can efficiently share compute resources and auto-scale as needed.

Getting Started with Nile

Start by signing up for Nile. Once you've signed up for Nile, you'll be promoted to create your first database. Go ahead and do so. You'll be redirected to the "Query Editor" page of your new database.

From there, click on "Home" (top icon on the left menu), click on "generate credentials" and copy the resulting connection string. You will need it in a sec.

Quickstart

Install the integration with:

pip install llama-index-vector-stores-nile

Use the connection string you generated earlier (at the "Getting started" step) to create a tenant-aware vector store.

:fire: NileVectorStore supports both tenant-aware vector stores, that isolates the documents for each tenant and a regular store which is typically used for shared data that all tenants can access. Below, we'll demonstrate the tenant-aware vector store.

# Replace with your connection string.
NILE_SERVICE_URL = "postgresql://nile:password@db.thenile.dev:5432/nile"

vector_store = NileVectorStore(
    service_url=NILEDB_SERVICE_URL,
    table_name="documents",
    tenant_aware=True,
    num_dimensions=1536,
)

Create an index from documents:

storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(
    documents_nexiv + documents_modamart,
    storage_context=storage_context,
    show_progress=True,
)

Or from existing embeddings:

index = VectorStoreIndex.from_vector_store(vector_store=vector_store)

and query each tenant's data with guaranteed isolation:

query_engine = index.as_query_engine(
    vector_store_kwargs={
        "tenant_id": str(tenant_id_modamart),
    },
)
response = query_engine.query("What action items do we need to follow up on?")

print(response)

See resources below for more information and examples.

Additional Resources

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llama_index_vector_stores_nile-0.2.0.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file llama_index_vector_stores_nile-0.2.0.tar.gz.

File metadata

File hashes

Hashes for llama_index_vector_stores_nile-0.2.0.tar.gz
Algorithm Hash digest
SHA256 26c4d6ae4f039f55980b9bb9c7aa92eeafab857be93a485ee076fd869df2bb47
MD5 6e3aa10c5b3124ea7cae4f6f80a3c136
BLAKE2b-256 ae94d772e2a16b5ce45581486da4d4c8d3c871b2fab26913df59d647fb4df49a

See more details on using hashes here.

File details

Details for the file llama_index_vector_stores_nile-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for llama_index_vector_stores_nile-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b509de9b6c060258e1ecbb2371a2904a391a3dec8987bb2f5f022c3140a7bf8
MD5 c310e5aea51a9f76eae36a077f17e614
BLAKE2b-256 aac7117f7cff0f2d5d22e751e0069209d9abf2d455a5d383d4aeab791268e981

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page