Skip to main content

LlamaIndex integrations for Google Cloud Spanner

Project description

Spanner for LlamaIndex

preview pypi versions

Quick Start

In order to use this library, you first need to go through the following steps:

  1. Select or create a Cloud Platform project.
  2. Enable billing for your project.
  3. Enable the Google Cloud Spanner API.
  4. Setup Authentication.

Installation

Install this library in a virtualenv using pip. virtualenv is a tool to create isolated Python environments. The basic problem it addresses is one of dependencies and versions, and indirectly permissions.

With virtualenv, it’s possible to install this library without needing system install permissions, and without clashing with the installed system dependencies.

Supported Python Versions

Python >= 3.9

Mac/Linux

pip install virtualenv
virtualenv <your-env>
source <your-env>/bin/activate
<your-env>/bin/pip install llama-index-spanner

Windows

pip install virtualenv
virtualenv <your-env>
<your-env>\Scripts\activate
<your-env>\Scripts\pip.exe install llama-index-spanner

Spanner Property Graph Store Usage

Use SpannerPropertyGraphStore to store nodes and edges extracted from documents.

from llama_index_spanner import SpannerPropertyGraphStore

graph_store = SpannerPropertyGraphStore(
    instance_id="my-instance",
    database_id="my-database",
    graph_name="my_graph",
)

See the full Spanner Graph Store tutorial.

Spanner Graph Retrievers Usage

Use SpannerGraphTextToGQLRetriever to translate natural language question to GQL and query SpannerPropertyGraphStore.

from llama_index_spanner import (
    SpannerPropertyGraphStore,
    SpannerGraphTextToGQLRetriever,
)
from llama_index.llms.google_genai import GoogleGenAI

graph_store = SpannerPropertyGraphStore(
    instance_id="my-instance",
    database_id="my-database",
    graph_name="my_graph",
)
llm = GoogleGenAI(
    model="gemini-2.0-flash",
)
retriever = SpannerGraphTextToGQLRetriever(graph_store=graph_store, llm=llm)
retriever.retrieve("Where does Elias Thorne's sibling live?")

Use SpannerGraphCustomRetriever to query your SpannerPropertyGraphStore with a hybrid retrieval approach, combining natural language-to-GQL translation with vector search capabilities.

The Vector Context Retriever uses semantic vector search to surface relevant contexts, even when they aren't explicitly structured in the graph. The Text2GQL Retriever translates natural language into GQL queries to extract precise relationships and attributes from the property graph.

The results from both retrievers are evaluated using an LLM-based reranker, which scores them based on relevance, completeness, and contextual fit with the original query.

This hybrid + rerank pipeline enables the system to handle everything from vague, open-ended questions to structured, entity-specific queries, delivering high-confidence, context-aware responses.

from llama_index_spanner import SpannerPropertyGraphStore, SpannerGraphCustomRetriever
from llama_index.llms.google_genai import GoogleGenAI
from llama_index.embeddings.google_genai import GoogleGenAIEmbedding

graph_store = SpannerPropertyGraphStore(
    instance_id="my-instance",
    database_id="my-database",
    graph_name="my_graph",
)
llm = GoogleGenAI(
    model="gemini-2.0-flash",
)
embed_model = GoogleGenAIEmbedding(model_name="text-embedding-004")
retriever = SpannerGraphCustomRetriever(
    similarity_top_k=4,
    path_depth=2,
    graph_store=graph_store,
    llm_text_to_gql=llm,
    embed_model=embed_model,
    llmranker_top_n=3,
)
retriever.retriever("Who lives in desert?")

See the full Spanner Graph Retrievers tutorial.

Contributing

Contributions to this library are always welcome and highly encouraged.

See CONTRIBUTING for more information how to get started.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. See Code of Conduct for more information.

License

Apache 2.0 - See LICENSE for more information.

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_spanner-0.1.4.tar.gz (53.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llama_index_spanner-0.1.4-py3-none-any.whl (39.4 kB view details)

Uploaded Python 3

File details

Details for the file llama_index_spanner-0.1.4.tar.gz.

File metadata

  • Download URL: llama_index_spanner-0.1.4.tar.gz
  • Upload date:
  • Size: 53.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for llama_index_spanner-0.1.4.tar.gz
Algorithm Hash digest
SHA256 9ca1cc4071826e6beb5b98cff116891ecfc361e27796526dc375f47a3da2eb10
MD5 cdb0d1cf3e00e421aa7e7ad61f3b06a9
BLAKE2b-256 e3815c27e8a8aff6a38a344423928e37217473cfc282b2fe4f0cc95257ae43ad

See more details on using hashes here.

File details

Details for the file llama_index_spanner-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for llama_index_spanner-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 be7ca89492f459e7f6917508e47b45130555adee0d7ede85624575e757f101bc
MD5 8511d9b6080791d7527545fcc9b661b3
BLAKE2b-256 48311e5a96d8b8e3a16b533afa9ab8f4bbfa68b58863dabbf6124fb466503d7a

See more details on using hashes here.

Supported by

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