Skip to main content

llama-index vector_stores tablestore integration

Project description

LlamaIndex Vector_Stores Integration: Tablestore

Tablestore is a fully managed NoSQL cloud database service that enables storage of a massive amount of structured and semi-structured data.

This page shows how to use functionality related to the Tablestore vector database.

To use Tablestore, you must create an instance. Here are the creating instance instructions.

Example

pip install llama-index-vector-stores-tablestore
import os

import tablestore
from llama_index.core import MockEmbedding
from llama_index.core.schema import TextNode
from llama_index.core.vector_stores import (
    VectorStoreQuery,
    MetadataFilters,
    MetadataFilter,
    FilterCondition,
    FilterOperator,
)

from llama_index.vector_stores.tablestore import TablestoreVectorStore

# 1. create tablestore vector store
test_dimension_size = 4
store = TablestoreVectorStore(
    endpoint=os.getenv("end_point"),
    instance_name=os.getenv("instance_name"),
    access_key_id=os.getenv("access_key_id"),
    access_key_secret=os.getenv("access_key_secret"),
    vector_dimension=test_dimension_size,
    vector_metric_type=tablestore.VectorMetricType.VM_COSINE,
    # metadata mapping is used to filter non-vector fields.
    metadata_mappings=[
        tablestore.FieldSchema(
            "type",
            tablestore.FieldType.KEYWORD,
            index=True,
            enable_sort_and_agg=True,
        ),
        tablestore.FieldSchema(
            "time",
            tablestore.FieldType.LONG,
            index=True,
            enable_sort_and_agg=True,
        ),
    ],
)

# 2. create table and index
store.create_table_if_not_exist()
store.create_search_index_if_not_exist()

# 3. new a mock embedding for test
embedder = MockEmbedding(test_dimension_size)

# 4. prepare some docs
movies = [
    TextNode(
        id_="1",
        text="hello world",
        metadata={"type": "a", "time": 1995},
    ),
    TextNode(
        id_="2",
        text="a b c",
        metadata={"type": "a", "time": 1990},
    ),
    TextNode(
        id_="3",
        text="sky cloud table",
        metadata={"type": "a", "time": 2009},
    ),
    TextNode(
        id_="4",
        text="dog cat",
        metadata={"type": "a", "time": 2023},
    ),
    TextNode(
        id_="5",
        text="computer python java",
        metadata={"type": "b", "time": 2018},
    ),
    TextNode(
        id_="6",
        text="java python js nodejs",
        metadata={"type": "c", "time": 2010},
    ),
    TextNode(
        id_="7",
        text="sdk golang python",
        metadata={"type": "a", "time": 2023},
    ),
]
for movie in movies:
    movie.embedding = embedder.get_text_embedding(movie.text)

# 5. write some docs
ids = store.add(movies)
assert len(ids) == 7

# 6. delete docs
store.delete(ids[0])

# 7. query with filters
query_result = store.query(
    query=VectorStoreQuery(
        query_embedding=embedder.get_text_embedding("nature fight physical"),
        similarity_top_k=5,
        filters=MetadataFilters(
            filters=[
                MetadataFilter(
                    key="type", value="a", operator=FilterOperator.EQ
                ),
                MetadataFilter(
                    key="time", value=2020, operator=FilterOperator.LTE
                ),
            ],
            condition=FilterCondition.AND,
        ),
    ),
)
print(query_result)

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_tablestore-0.3.0.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

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

File details

Details for the file llama_index_vector_stores_tablestore-0.3.0.tar.gz.

File metadata

File hashes

Hashes for llama_index_vector_stores_tablestore-0.3.0.tar.gz
Algorithm Hash digest
SHA256 96549bec075f3368e48d883f854540f626dade31fc422fa6dbca5a26b5fc98b3
MD5 dcd0ce82d8b1a502b1440e6f67afc94d
BLAKE2b-256 b9573f624f4e6445e15c5a3795bffa1de0bc6314f948619febda9eec55e0924a

See more details on using hashes here.

File details

Details for the file llama_index_vector_stores_tablestore-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for llama_index_vector_stores_tablestore-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1bbe66ab09e90ce1e3156e27b83cf6d6874a349c6c776f9ce1faf23babe83b81
MD5 716ac5db0f3437003222b9e2374002f5
BLAKE2b-256 29ac1e289f6b7d1889042be5117c1772076a41a7ae13c357e41f4ce2e2b80f29

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