Skip to content

Tool

VectorStoreClient

Bases: BaseTool

Attributes:

Name Type Description
description str

LLM-friendly vector DB description.

namespace Optional[str]

Vector storage namespace.

query_engine VectorQueryEngine

BaseQueryEngine.

top_n int

Max number of results returned for the query engine query.

Source code in griptape/tools/vector_store_client/tool.py
@define
class VectorStoreClient(BaseTool):
    """
    Attributes:
        description: LLM-friendly vector DB description.
        namespace: Vector storage namespace.
        query_engine: `BaseQueryEngine`.
        top_n: Max number of results returned for the query engine query.
    """

    DEFAULT_TOP_N = 5

    description: str = field(kw_only=True)
    query_engine: VectorQueryEngine = field(kw_only=True)
    top_n: int = field(default=DEFAULT_TOP_N, kw_only=True)
    namespace: Optional[str] = field(default=None, kw_only=True)

    @activity(
        config={
            "description": "Can be used to search a vector database with the following description: {{ _self.description }}",
            "schema": Schema(
                {
                    Literal(
                        "query", description="A natural language search query to run against the vector database"
                    ): str
                }
            ),
        }
    )
    def search(self, params: dict) -> BaseArtifact:
        query = params["values"]["query"]

        try:
            return self.query_engine.query(query, top_n=self.top_n, namespace=self.namespace)
        except Exception as e:
            return ErrorArtifact(f"error querying vector store: {e}")

DEFAULT_TOP_N = 5 class-attribute instance-attribute

description: str = field(kw_only=True) class-attribute instance-attribute

namespace: Optional[str] = field(default=None, kw_only=True) class-attribute instance-attribute

query_engine: VectorQueryEngine = field(kw_only=True) class-attribute instance-attribute

top_n: int = field(default=DEFAULT_TOP_N, kw_only=True) class-attribute instance-attribute

search(params)

Source code in griptape/tools/vector_store_client/tool.py
@activity(
    config={
        "description": "Can be used to search a vector database with the following description: {{ _self.description }}",
        "schema": Schema(
            {
                Literal(
                    "query", description="A natural language search query to run against the vector database"
                ): str
            }
        ),
    }
)
def search(self, params: dict) -> BaseArtifact:
    query = params["values"]["query"]

    try:
        return self.query_engine.query(query, top_n=self.top_n, namespace=self.namespace)
    except Exception as e:
        return ErrorArtifact(f"error querying vector store: {e}")