Skip to content

bodo.pandas.BodoSeries.ai.query_s3_vectors

BodoSeries.query_s3_vectors(
        self,
        vector_bucket_name: str,
        index_name: str,
        topk: int,
        region: str = None,
        filter: dict = None,
        return_distance: bool = False,
        return_metadata: bool = False,
    ) -> BodoDataFrame
Query S3 vector index and return data of matching vectors in vector index. See S3 documentation for more details.

Parameters

vector_bucket_name: str: S3 Vectors bucket name to use.

index_name : str: S3 Vectors index name to use.

topk : int: Number of results to return.

region : str, optional: Region of S3 Vector bucket.

filter : dict, optional: Metadata filter to apply during the query.

return_distance : bool, optional: Whether to include the computed distance in the response.

return_metadata : bool, optional: Whether to include the metadata in the response.

Returns

BodoDataFrame

Example

import pandas as pd
import bodo.pandas as bd
import boto3 
import json 

bedrock = boto3.client("bedrock-runtime", region_name="us-east-2")

input_text = "adventures in space"

response = bedrock.invoke_model(
    modelId="amazon.titan-embed-text-v2:0",
    body=json.dumps({"inputText": input_text})
)

model_response = json.loads(response["body"].read())
embedding = model_response["embedding"]

df = pd.DataFrame({"data": [embedding]*10})
bdf = bd.from_pandas(df)

out = bdf.data.ai.query_s3_vectors(
    vector_bucket_name="my-test-vector",
    index_name="my-test-ind",
    region="us-east-2",
    topk=3,
    filter={"genre": "scifi"},
    return_distance=True,
    return_metadata=True,
)
print(out)

Output:

                            keys              distances                                           metadata
0  ['Star Wars' 'Jurassic Park']  [0.7918925 0.8599859]  ["{'source_text': 'Star Wars: A farm boy joins...
1  ['Star Wars' 'Jurassic Park']  [0.7918925 0.8599859]  ["{'genre': 'scifi', 'source_text': 'Star Wars...
2  ['Star Wars' 'Jurassic Park']  [0.7918925 0.8599859]  ["{'genre': 'scifi', 'source_text': 'Star Wars...
3  ['Star Wars' 'Jurassic Park']  [0.7918925 0.8599859]  ["{'source_text': 'Star Wars: A farm boy joins...
4  ['Star Wars' 'Jurassic Park']  [0.7918925 0.8599859]  ["{'source_text': 'Star Wars: A farm boy joins...
5  ['Star Wars' 'Jurassic Park']  [0.7918925 0.8599859]  ["{'genre': 'scifi', 'source_text': 'Star Wars...
6  ['Star Wars' 'Jurassic Park']  [0.7918925 0.8599859]  ["{'genre': 'scifi', 'source_text': 'Star Wars...
7  ['Star Wars' 'Jurassic Park']  [0.7918925 0.8599859]  ["{'source_text': 'Star Wars: A farm boy joins...
8  ['Star Wars' 'Jurassic Park']  [0.7918925 0.8599859]  ["{'genre': 'scifi', 'source_text': 'Star Wars...
9  ['Star Wars' 'Jurassic Park']  [0.7918925 0.8599859]  ["{'genre': 'scifi', 'source_text': 'Star Wars...