G·Graph Daily Lab
DAY 48 / 100
내 학습 기록
DAY 48개념·실험그래프 DB 엔진과 선택

벡터 인덱스와 그래프를 함께

뜻이 비슷한 것을 찾는 벡터 검색과 명시적 관계를 따라가는 그래프 순회를 이어, 각각만으로는 놓치는 근거를 찾는 방법을 봅니다.

약 20분조작형 실험 확인 퀴즈
A SMALL DETOUR

이번 회차, 내 속도로.

기초를 더 짚거나 궁금한 주제로 잠깐 넓혀 보세요. 최대 3단계를 거쳐 DAY 48로 돌아옵니다.

난이도·관심 주제 고르기
이번 회차는 어느 속도로 볼까요?
더 살펴볼 주제 1~2개 선택

1/2개 선택 · 새 보충·심화 수업과 본과정 다시 읽기를 선택할 수 있어요.

이렇게 다녀와요 1단계 · 약 12분

  1. 출발 · DAY 48하이브리드 검색
  2. 1. 관심 주제ACID·격리 수준추가 19 · 새 추가 수업
  3. 복귀 · DAY 48원래 회차 이어가기
  • ACID·격리 수준 · DAY 49에서 트랜잭션 순회(OLTP) 워크로드를 봤다면, 그 ‘트랜잭션’이 무엇을 보장하고 무엇을 보장하지 않는지 확인하러 옵니다.

선택과 경로 기록은 이 브라우저에 저장됩니다. 본과정의 회차 완료와는 별도입니다.

복귀: DAY 48 → 본과정 다음 회차: DAY 49

핵심 개념

벡터 검색은 문서나 노드를 임베딩 벡터로 바꿔, 질문 벡터와 코사인 유사도가 높은 항목을 찾습니다. 단어가 달라도 뜻이 가까우면 찾을 수 있다는 장점이 있습니다. 하지만 ‘비슷한 것’만 찾기 때문에, 질문과 문장은 닮지 않았지만 관계로 이어진 근거(같은 저자의 다른 논문, 인용한 논문)는 놓치기 쉽습니다.

하이브리드 검색은 두 단계를 잇습니다. 먼저 벡터 인덱스로 질문과 비슷한 노드 상위 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와 홉 수를 질문 유형에 맞게 정하고 결과를 점검해야 합니다.

하이브리드 검색은 벡터로 시작 노드를 찾고 그래프로 이웃을 확장해, 의미 유사성과 명시적 관계를 함께 씁니다.

작은 예제로 따라가기

01

질문 ‘“그래프 검색 증강”의 저자가 쓴 다른 논문은?’에 대한 가상 유사도가 P3 0.91, P2 0.62, P4 0.40, P1 0.35라면 벡터 top-1은 P3 하나입니다.

02

P3에서 AUTHORED를 거꾸로 1홉 따라가면 저자 서준과 민수가 들어옵니다.

03

한 홉 더 가면 민수가 쓴 P2가 들어와, 벡터 순위로는 1위가 아니던 정답 근거가 컨텍스트에 포함됩니다.

직접 실험해 보기

단계를 ‘벡터만’과 ‘벡터→그래프 확장’으로 바꾸고 상위 k와 확장 홉을 조절하며, 정답 근거가 컨텍스트에 들어오는 가장 작은 설정과 그때의 컨텍스트 크기를 기록하세요.

LIVE EXPERIMENT · HYBRID SEARCH

벡터로 시작점을 찾고 그래프로 넓히기

질문: 하린이 일하는 연구실은 어느 도시에 있나? (정답 근거 2개: 하린→언어연구실, 언어연구실→서울)
문서 6개 · 유사도(가상 값) 순
  • 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하린과 도윤은 언어 모델 평가 논문을 함께 썼다.
근거 1/2 — 언어연구실의 도시를 모른다언어연구실이 어느 도시에 있는지는 질문과 단어가 덜 겹쳐 유사도가 낮다(D4 0.48). 관계를 따라가면 닿는다.
CALL db.index.vector.queryNodes(
  'doc_embedding', 2, $questionEmbedding)
YIELD node AS doc, score
RETURN doc.text, score
ORDER BY score DESC

이번에는 직접 풀어 보세요

정답을 보기 전에 계산과 이유를 적어 보세요. 해설과 비교하고 확인 표시를 남기면 완료할 수 있습니다.

문제 1
힌트 보기

두 논문의 저자를 모으고 중복은 한 번만 셉니다.

풀이와 비교하기

P3에서 서준·민수, P2에서 민수·지아가 들어와 서준·민수·지아 3명입니다. 민수는 두 논문에 모두 있지만 한 번만 셉니다.

풀이와 확인 표시는 이 브라우저에 저장됩니다.

YOUR NOTES

오늘 이해한 것과 다시 볼 것

계산이 달라진 이유, 헷갈린 개념, 다음에 확인할 질문을 남겨 보세요.

메모는 이 브라우저에 저장됩니다. 홈에서 전체 기록을 내려받을 수 있습니다.

오늘의 이해 확인

벡터 검색 뒤에 그래프 확장을 붙이는 주된 이유는?

완료 조건: 확인 퀴즈 정답 · / 직접 풀기 0/1

FURTHER READING

더 깊이 읽기

예제와 실험 데이터는 이 과정을 위해 만든 것입니다. 원문은 선택 자료이며, 강의와 직접 풀기만으로도 다음 회차를 이어갈 수 있습니다.

Cypher Manual: Vector indexesNeo4jGraph Retrieval-Augmented Generation: A SurveyPeng et al. (2024)

이 자료는 개념 학습용입니다. 실제 데이터베이스·라이브러리·플랫폼의 동작과 설정은 제품과 버전마다 다를 수 있습니다.