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)
- ArangoEmbeddingRetriever — 임베딩 기반 검색
- Metadata Filtering — 필터 문법