ArangoDocumentStore

ArangoDocumentStore

Haystack와 함께 ArangoDB 다중 모델 데이터베이스를 임베딩 검색과 GraphRAG 워크로드에 사용해요.

API reference: ArangoDB GitHub link: https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/arangodb

출처: 문서

본문

ArangoDB는 문서, 그래프, 키-값 데이터를 단일 엔진에 결합하는 다중 모델 데이터베이스예요. ArangoDocumentStore는 문서를 ArangoDB 컬렉션에 저장하고 AQL(ArangoDB 쿼리 언어) 벡터 함수로 벡터 유사도 검색을 실행합니다. 문서와 그 관계가 같은 데이터베이스에 있기 때문에, ArangoDB는 의미 검색과 그래프 탐색을 결합하는 GraphRAG 파이프라인에 잘 맞아요.

벡터 검색에는 벡터 인덱스 기능이 활성화된 ArangoDB 3.12 이상(--vector-index 시작 플래그)이 필요합니다.

자세한 내용은 ArangoDB 문서를 참고하세요.

Installation

벡터 인덱스를 활성화하고 루트 비밀번호를 설정해 Docker로 ArangoDB를 실행하세요:

docker run -d -p 8529:8529 \
  -e ARANGO_ROOT_PASSWORD=test-password \
  arangodb:3.12 arangod --vector-index

Haystack 통합을 설치하세요:

pip install arangodb-haystack

Usage

스토어는 기본적으로 ARANGO_USERNAME과 ARANGO_PASSWORD 환경 변수에서 자격 증명을 읽습니다. ARANGO_USERNAME은 설정하지 않으면 root로 폴백되므로, 보통 비밀번호만 제공하면 돼요:

export ARANGO_PASSWORD=test-password

문서 스토어를 초기화하고 문서를 작성하세요:

from haystack import Document
from haystack_integrations.document_stores.arangodb import ArangoDocumentStore

document_store = ArangoDocumentStore(
    host="http://localhost:8529",
    database="haystack",
    collection_name="documents",
    embedding_dimension=768,
    recreate_collection=True,
)
document_store.write_documents(
    [
        Document(
            content="There are over 7,000 languages spoken around the world today.",
        ),
        Document(
            content="Elephants have been observed to recognize themselves in mirrors.",
        ),
    ],
)
print(document_store.count_documents())

초기화 파라미터에 대한 자세한 내용은 API docs를 참고하세요.

문서의 실제 임베딩을 계산하려면 SentenceTransformersDocumentEmbedder 같은 Document Embedder를 사용하세요. 임베더가 만든 임베딩 차원은 스토어에 설정된 embedding_dimension과 일치해야 해요.

Authentication

자격 증명은 Haystack Secret 객체로 전달됩니다. 기본적으로 환경 변수에서 읽지만 명시적으로 전달할 수도 있어요:

from haystack.utils import Secret
from haystack_integrations.document_stores.arangodb import ArangoDocumentStore

document_store = ArangoDocumentStore(
    host="http://localhost:8529",
    database="haystack",
    username=Secret.from_env_var("ARANGO_USERNAME", strict=False),
    password=Secret.from_env_var("ARANGO_PASSWORD"),
)

Similarity Functions

ArangoDocumentStore는 벡터 검색을 위한 세 가지 유사도 함수를 지원하며, 초기화 때 similarity_function 파라미터로 설정합니다:

  • "cosine"(기본값): 코사인 유사도. 정규화된 임베딩에 가장 적합해요.
  • "dot_product": 내적. 임베딩의 크기가 의미를 지닐 때 유용합니다.
  • "l2": 유클리드(L2) 거리.
document_store = ArangoDocumentStore(
    host="http://localhost:8529",
    embedding_dimension=768,
    similarity_function="dot_product",
)

Supported Retrievers

  • ArangoEmbeddingRetriever: ArangoDB의 AQL 벡터 함수를 사용해 ArangoDocumentStore에서 벡터 유사도에 따라 문서를 검색해요.

더 알아보기 (Learn more)