--- title: "ArcadeDB" id: integrations-arcadedb description: "ArcadeDB integration for Haystack" slug: "/integrations-arcadedb" --- ## haystack_integrations.components.retrievers.arcadedb.embedding_retriever ### ArcadeDBEmbeddingRetriever Retrieve documents from ArcadeDB using vector similarity (LSM_VECTOR / HNSW index). Usage example: ```python from haystack import Document from haystack.components.embedders import SentenceTransformersTextEmbedder from haystack_integrations.components.retrievers.arcadedb import ArcadeDBEmbeddingRetriever from haystack_integrations.document_stores.arcadedb import ArcadeDBDocumentStore store = ArcadeDBDocumentStore(database="mydb") retriever = ArcadeDBEmbeddingRetriever(document_store=store, top_k=5) # Add documents to DocumentStore documents = [ Document(text="My name is Carla and I live in Berlin"), Document(text="My name is Paul and I live in New York"), Document(text="My name is Silvano and I live in Matera"), Document(text="My name is Usagi Tsukino and I live in Tokyo"), ] document_store.write_documents(documents) embedder = SentenceTransformersTextEmbedder() query_embeddings = embedder.run("Who lives in Berlin?")["embedding"] result = retriever.run(query=query_embeddings) for doc in result["documents"]: print(doc.content) ``` #### __init__ ```python __init__( *, document_store: ArcadeDBDocumentStore, filters: dict[str, Any] | None = None, top_k: int = 10, filter_policy: FilterPolicy = FilterPolicy.REPLACE ) -> None ``` Create an ArcadeDBEmbeddingRetriever. **Parameters:** - **document_store** (ArcadeDBDocumentStore) – An instance of `ArcadeDBDocumentStore`. - **filters** (dict\[str, Any\] | None) – Default filters applied to every retrieval call. - **top_k** (int) – Maximum number of documents to return. - **filter_policy** (FilterPolicy) – How runtime filters interact with default filters. #### run ```python run( query_embedding: list[float], filters: dict[str, Any] | None = None, top_k: int | None = None, ) -> dict[str, list[Document]] ``` Retrieve documents by vector similarity. **Parameters:** - **query_embedding** (list\[float\]) – The embedding vector to search with. - **filters** (dict\[str, Any\] | None) – Optional filters to narrow results. - **top_k** (int | None) – Maximum number of documents to return. **Returns:** - dict\[str, list\[Document\]\] – A dictionary with the following keys: - `documents`: List of `Document`s most similar to the given `query_embedding` #### to_dict ```python to_dict() -> dict[str, Any] ``` Serializes the component to a dictionary. **Returns:** - dict\[str, Any\] – Dictionary with serialized data. #### from_dict ```python from_dict(data: dict[str, Any]) -> ArcadeDBEmbeddingRetriever ``` Deserializes the component from a dictionary. **Parameters:** - **data** (dict\[str, Any\]) – Dictionary to deserialize from. **Returns:** - ArcadeDBEmbeddingRetriever – Deserialized component. ## haystack_integrations.document_stores.arcadedb.document_store ArcadeDB DocumentStore for Haystack 2.x — document storage + vector search via HTTP/JSON API. ### ArcadeDBDocumentStore An ArcadeDB-backed DocumentStore for Haystack 2.x. Uses ArcadeDB's HTTP/JSON API for all operations — no special drivers required. Supports HNSW vector search (LSM_VECTOR) and SQL metadata filtering. Usage example: ```python from haystack.dataclasses.document import Document from haystack_integrations.document_stores.arcadedb import ArcadeDBDocumentStore document_store = ArcadeDBDocumentStore( url="http://localhost:2480", database="haystack", embedding_dimension=768, ) document_store.write_documents([ Document(content="This is first", embedding=[0.0]*5), Document(content="This is second", embedding=[0.1, 0.2, 0.3, 0.4, 0.5]) ]) ``` #### __init__ ```python __init__( *, url: str = "http://localhost:2480", database: str = "haystack", username: Secret = Secret.from_env_var("ARCADEDB_USERNAME", strict=False), password: Secret = Secret.from_env_var("ARCADEDB_PASSWORD", strict=False), type_name: str = "Document", embedding_dimension: int = 768, similarity_function: str = "cosine", recreate_type: bool = False, create_database: bool = True ) -> None ``` Create an ArcadeDBDocumentStore instance. **Parameters:** - **url** (str) – ArcadeDB HTTP endpoint. - **database** (str) – Database name. - **username** (Secret) – HTTP Basic Auth username (default: `ARCADEDB_USERNAME` env var). - **password** (Secret) – HTTP Basic Auth password (default: `ARCADEDB_PASSWORD` env var). - **type_name** (str) – Vertex type name for documents. - **embedding_dimension** (int) – Vector dimension for the HNSW index. - **similarity_function** (str) – Distance metric — `"cosine"`, `"euclidean"`, or `"dot"`. - **recreate_type** (bool) – If `True`, drop and recreate the type on initialization. - **create_database** (bool) – If `True`, create the database if it doesn't exist. #### to_dict ```python to_dict() -> dict[str, Any] ``` Serializes the DocumentStore to a dictionary. **Returns:** - dict\[str, Any\] – Dictionary with serialized data. #### from_dict ```python from_dict(data: dict[str, Any]) -> ArcadeDBDocumentStore ``` Deserializes the DocumentStore from a dictionary. **Parameters:** - **data** (dict\[str, Any\]) – The dictionary to deserialize from. **Returns:** - ArcadeDBDocumentStore – The deserialized DocumentStore. #### count_documents ```python count_documents() -> int ``` Returns how many documents are present in the document store. **Returns:** - int – Number of documents in the document store. #### filter_documents ```python filter_documents(filters: dict[str, Any] | None = None) -> list[Document] ``` Return documents matching the given filters. **Parameters:** - **filters** (dict\[str, Any\] | None) – Haystack filter dictionary. **Returns:** - list\[Document\] – List of matching documents. #### write_documents ```python write_documents( documents: list[Document], policy: DuplicatePolicy = DuplicatePolicy.NONE ) -> int ``` Write documents to the store. **Parameters:** - **documents** (list\[Document\]) – List of Haystack Documents to write. - **policy** (DuplicatePolicy) – How to handle duplicate document IDs. **Returns:** - int – Number of documents written. #### delete_documents ```python delete_documents(document_ids: list[str]) -> None ``` Delete documents by their IDs. **Parameters:** - **document_ids** (list\[str\]) – List of document IDs to delete. #### delete_all_documents ```python delete_all_documents() -> None ``` Deletes all documents in the document store. #### delete_by_filter ```python delete_by_filter(filters: dict[str, Any]) -> int ``` Deletes all documents that match the provided filters. **Parameters:** - **filters** (dict\[str, Any\]) – The filters to apply to select documents for deletion. For filter syntax, see [Haystack metadata filtering](https://docs.haystack.deepset.ai/docs/metadata-filtering) **Returns:** - int – The number of documents deleted. #### update_by_filter ```python update_by_filter(filters: dict[str, Any], meta: dict[str, Any]) -> int ``` Updates the metadata of all documents that match the provided filters. **Parameters:** - **filters** (dict\[str, Any\]) – The filters to apply to select documents for updating. For filter syntax, see [Haystack metadata filtering](https://docs.haystack.deepset.ai/docs/metadata-filtering) - **meta** (dict\[str, Any\]) – The metadata fields to update. **Returns:** - int – The number of documents updated. #### count_documents_by_filter ```python count_documents_by_filter(filters: dict[str, Any]) -> int ``` Counts the number of documents matching the provided filter **Parameters:** - **filters** (dict\[str, Any\]) – The filters to apply to the documents **Returns:** - int – The number of documents that match the filter #### count_unique_metadata_by_filter ```python count_unique_metadata_by_filter( filters: dict[str, Any], metadata_fields: list[str] ) -> dict[str, int] ``` Counts unique values for each metadata field in documents matching the provided filters. **Parameters:** - **filters** (dict\[str, Any\]) – The filters to apply to the document list. - **metadata_fields** (list\[str\]) – Metadata fields for which to count unique values. **Returns:** - dict\[str, int\] – A dictionary where keys are metadata field names and values are the counts of unique values for that field. #### get_metadata_fields_info ```python get_metadata_fields_info() -> dict[str, dict[str, str]] ``` Returns the metadata fields and their corresponding types based on sampled documents. **Returns:** - dict\[str, dict\[str, str\]\] – A dictionary mapping field names to dictionaries with a `type` key. #### get_metadata_field_min_max ```python get_metadata_field_min_max(metadata_field: str) -> dict[str, Any] ``` For a given metadata field, finds its min and max values. **Parameters:** - **metadata_field** (str) – The metadata field to inspect. **Returns:** - dict\[str, Any\] – A dictionary with `min` and `max` keys and their corresponding values. #### get_metadata_field_unique_values ```python get_metadata_field_unique_values( metadata_field: str, search_term: str | None = None, from_: int = 0, size: int = 10, ) -> tuple[list[str], int] ``` Retrieves unique values for a field matching a search term or all possible values if no search term is given. **Parameters:** - **metadata_field** (str) – The metadata field to inspect. - **search_term** (str | None) – Optional case-insensitive substring search term. - **from\_** (int) – The starting index for pagination. - **size** (int) – The number of values to return. **Returns:** - tuple\[list\[str\], int\] – A tuple containing the paginated values and the total count.