벡터 인덱스와 그래프를 함께
뜻이 비슷한 것을 찾는 벡터 검색과 명시적 관계를 따라가는 그래프 순회를 이어, 각각만으로는 놓치는 근거를 찾는 방법을 봅니다.
이번 회차, 내 속도로.
기초를 더 짚거나 궁금한 주제로 잠깐 넓혀 보세요. 최대 3단계를 거쳐 DAY 48로 돌아옵니다.
난이도·관심 주제 고르기
1/2개 선택 · 새 보충·심화 수업과 본과정 다시 읽기를 선택할 수 있어요.
이렇게 다녀와요 1단계 · 약 12분
- 출발 · DAY 48하이브리드 검색
- 1. 관심 주제ACID·격리 수준추가 19 · 새 추가 수업
- 복귀 · DAY 48원래 회차 이어가기
- ACID·격리 수준 · DAY 49에서 트랜잭션 순회(OLTP) 워크로드를 봤다면, 그 ‘트랜잭션’이 무엇을 보장하고 무엇을 보장하지 않는지 확인하러 옵니다.
선택과 경로 기록은 이 브라우저에 저장됩니다. 본과정의 회차 완료와는 별도입니다.
핵심 개념
벡터 검색은 문서나 노드를 임베딩 벡터로 바꿔, 질문 벡터와 코사인 유사도가 높은 항목을 찾습니다. 단어가 달라도 뜻이 가까우면 찾을 수 있다는 장점이 있습니다. 하지만 ‘비슷한 것’만 찾기 때문에, 질문과 문장은 닮지 않았지만 관계로 이어진 근거(같은 저자의 다른 논문, 인용한 논문)는 놓치기 쉽습니다.
하이브리드 검색은 두 단계를 잇습니다. 먼저 벡터 인덱스로 질문과 비슷한 노드 상위 k개를 시작점으로 고르고, 그다음 그래프에서 AUTHORED·CITES 같은 관계를 1~2홉 따라가 관련 노드를 모읍니다. 의미 유사성과 명시적 관계를 함께 쓰는 셈입니다. 이 흐름은 GraphRAG의 로컬 검색(DAY 89)에서 다시 만납니다.
Neo4j에서는 CREATE VECTOR INDEX paper_emb FOR (p:Paper) ON p.embedding OPTIONS {indexConfig: {`vector.dimensions`: 384, `vector.similarity_function`: 'cosine'}}로 벡터 인덱스를 만들고, CALL db.index.vector.queryNodes('paper_emb', 3, $q) YIELD node, score 뒤에 MATCH (node)<-[:AUTHORED]-(a:Person)처럼 순회를 붙입니다. 이 프로시저는 Neo4j 5에서 쓰는 방식이며, 최신 버전 문서는 SEARCH 절을 권장합니다.
한계도 있습니다. 벡터 인덱스는 보통 근사 최근접 탐색이라 가장 비슷한 항목을 놓칠 수 있고, 처음 고른 시작점이 틀리면 그래프 확장으로도 정답에 닿지 못합니다. 반대로 홉과 개수를 넓히면 관련 없는 노드가 섞여 컨텍스트가 커집니다. 유사도 점수는 정답 여부가 아니라 비슷한 정도이므로, k와 홉 수를 질문 유형에 맞게 정하고 결과를 점검해야 합니다.
작은 예제로 따라가기
질문 ‘“그래프 검색 증강”의 저자가 쓴 다른 논문은?’에 대한 가상 유사도가 P3 0.91, P2 0.62, P4 0.40, P1 0.35라면 벡터 top-1은 P3 하나입니다.
P3에서 AUTHORED를 거꾸로 1홉 따라가면 저자 서준과 민수가 들어옵니다.
한 홉 더 가면 민수가 쓴 P2가 들어와, 벡터 순위로는 1위가 아니던 정답 근거가 컨텍스트에 포함됩니다.
직접 실험해 보기
단계를 ‘벡터만’과 ‘벡터→그래프 확장’으로 바꾸고 상위 k와 확장 홉을 조절하며, 정답 근거가 컨텍스트에 들어오는 가장 작은 설정과 그때의 컨텍스트 크기를 기록하세요.
벡터로 시작점을 찾고 그래프로 넓히기
- D1 · 유사도 0.91 · 상위 1위 — 사용하린은 2019년부터 언어연구실에서 일한다.
- D2 · 유사도 0.84 · 상위 2위 — 사용하린과 도윤은 언어 모델 평가 논문을 함께 썼다.
- D3 · 유사도 0.71 · 상위 k 밖그래프연구실은 대전에 있는 그래프 연구 조직이다.
- D4 · 유사도 0.48 · 상위 k 밖언어연구실은 서울에 있으며 유나가 최근 합류했다.
- D5 · 유사도 0.35 · 상위 k 밖지아와 민수는 지식 그래프 구축 논문을 함께 썼다.
- D6 · 유사도 0.30 · 상위 k 밖민수는 2021년 그래프연구실에 합류했다.
진한 노드 = 상위 문서가 언급한 시드 엔티티, 하늘색 = 확장으로 닿은 엔티티, 주황 엣지 = 혼동 근거(대전).
- 문서 D1 · 유사도 0.91 · 정답 근거하린은 2019년부터 언어연구실에서 일한다.
- 문서 D2 · 유사도 0.84하린과 도윤은 언어 모델 평가 논문을 함께 썼다.
CALL db.index.vector.queryNodes(
'doc_embedding', 2, $questionEmbedding)
YIELD node AS doc, score
RETURN doc.text, score
ORDER BY score DESC이번에는 직접 풀어 보세요
정답을 보기 전에 계산과 이유를 적어 보세요. 해설과 비교하고 확인 표시를 남기면 완료할 수 있습니다.
힌트 보기
두 논문의 저자를 모으고 중복은 한 번만 셉니다.
풀이와 비교하기
P3에서 서준·민수, P2에서 민수·지아가 들어와 서준·민수·지아 3명입니다. 민수는 두 논문에 모두 있지만 한 번만 셉니다.
풀이와 확인 표시는 이 브라우저에 저장됩니다.
오늘 이해한 것과 다시 볼 것
계산이 달라진 이유, 헷갈린 개념, 다음에 확인할 질문을 남겨 보세요.
메모는 이 브라우저에 저장됩니다. 홈에서 전체 기록을 내려받을 수 있습니다.오늘의 이해 확인
벡터 검색 뒤에 그래프 확장을 붙이는 주된 이유는?
완료 조건: 확인 퀴즈 정답 · / 직접 풀기 0/1
더 깊이 읽기
예제와 실험 데이터는 이 과정을 위해 만든 것입니다. 원문은 선택 자료이며, 강의와 직접 풀기만으로도 다음 회차를 이어갈 수 있습니다.
Cypher Manual: Vector indexesNeo4jGraph Retrieval-Augmented Generation: A SurveyPeng et al. (2024)이 자료는 개념 학습용입니다. 실제 데이터베이스·라이브러리·플랫폼의 동작과 설정은 제품과 버전마다 다를 수 있습니다.