Neo4j는 vector 유사도 검색을 통합 지원하는 오픈 소스 graph database입니다지원 기능:
- approximate nearest neighbor search
- Euclidean similarity 및 cosine similarity
- vector와 keyword 검색을 결합한 hybrid search
Neo4jVector)를 사용하는 방법을 보여줍니다.
설치 지침을 참조하세요.
OpenAIEmbeddings를 사용하려면 OpenAI API Key를 가져와야 합니다.
Cosine Distance를 사용한 Similarity Search (기본값)
vectorstore 작업하기
위에서는 vectorstore를 처음부터 생성했습니다. 하지만 종종 기존 vectorstore를 사용하고 싶을 때가 있습니다. 이를 위해 직접 초기화할 수 있습니다.from_existing_graph 메서드를 사용하여 기존 graph에서 vectorstore를 초기화할 수도 있습니다. 이 메서드는 database에서 관련 텍스트 정보를 가져와서 텍스트 embedding을 계산하고 database에 다시 저장합니다.
Metadata 필터링
Neo4j vector store는 parallel runtime과 exact nearest neighbor search를 결합하여 metadata 필터링도 지원합니다. Neo4j 5.18 이상 버전이 필요합니다. 동등 필터링은 다음 구문을 사용합니다.$eq: Equal$ne: Not Equal$lt: Less than$lte: Less than or equal$gt: Greater than$gte: Greater than or equal$in: In a list of values$nin: Not in a list of values$between: Between two values$like: Text contains value$ilike: lowered text contains value
OR 연산자를 사용할 수도 있습니다
document 추가
기존 vectorstore에 document를 추가할 수 있습니다.retrieval query로 응답 커스터마이징
graph에서 다른 정보를 가져올 수 있는 사용자 정의 Cypher snippet을 사용하여 응답을 커스터마이징할 수도 있습니다. 내부적으로 최종 Cypher statement는 다음과 같이 구성됩니다:text: Union[str, Dict] = document의page_content를 채우는 데 사용되는 값score: Float = 유사도 점수metadata: Dict = document의 추가 metadata
embedding을 제외한 모든 node property를 dictionary로 text column에 전달하는 예제입니다.
Hybrid search (vector + keyword)
Neo4j는 vector와 keyword index를 모두 통합하여 hybrid search 접근 방식을 사용할 수 있습니다Retriever 옵션
이 섹션은Neo4jVector를 retriever로 사용하는 방법을 보여줍니다.
출처를 포함한 Question Answering
이 섹션은 Index에서 출처를 포함한 question-answering을 수행하는 방법을 다룹니다. Index에서 document를 조회하는RetrievalQAWithSourcesChain을 사용하여 이를 수행합니다.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.