260928

u·2일 전

TIL

목록 보기
26/27

01

  1. VectorRetriever : 의미 기반 검색
    1. 질문 임베딩
    2. 질문과 유사한 청크 검색
    3. 같은 영화의 중복 청크 제거 → 기준 영화 후보
  2. VectorCypherRetriever : 의미 검색 + 그래프 관계 확장
    1. 질문 벡터 → 진입 청크 찾기
    2. 청크 → 원문 → 기준 영화
    3. 기준 영화 → 공통 배우 → 다른 영화로 확장
    4. paths에 공통 배우 + 양쪽 관계 claim_id 저장
    5. 같은 후보 영화 중복 병합
  3. 전문 검색
    1. 질문 언어 판단
    2. 검색용 핵심어 변환
    3. Neo4j Full-text(BM25) 검색
    4. 같은 원문은 최고 점수 청크만 유지
    5. source_id로 Vector 결과와 비교

Vector = 의미로 찾기
Graph = 관계로 확장하기
Full-text = 단어로 찾기

# (1) 의미기반 검색 VectorRetriver
# (2) 의미 + Cypher 확장 검색 VectorCypherRetriever
# (3) 전문 검색

02

  1. 질문을 역할별로 나눔
    • 의미/줄거리 검색용 질문
    • 그래프 관계 조건용 질문
  2. 세 가지 검색
    1. 전문 검색 → BM25
    2. 벡터 검색 → Dense
    3. 그래프 검색 → GraphCypherQAChain
      자연어 질문 → LLM이 Cypher 생성 → Neo4j 조회 → 관계 후보 반환
  3. 검색 결과 통합
    1. 전문 + 벡터
      → EnsembleRetriever
      → 가중 RRF
    2. 그래프 검색 결과의 source_id
      → 관계 조건을 만족하는 allowed_ids
  4. 관계 조건 적용
    • RRF 결과 중 allowed_ids에 속하는 후보만 유지
    • 그래프에는 있지만 전문/벡터 검색이 놓친 후보
      → search_score = 0으로 뒤에 추가
  5. PageRank 재랭킹
    • 그래프 전체에서 노드 중요도 계산
    • 검색 점수 + PageRank 점수 결합
    • final_score로 후보 재정렬
  6. Multi-hop 근거 구성
    • 기준 영화 → 배우 → 후보 영화
    • first_claim / second_claim으로 관계 근거 추적
    • 후보 원문 + 영화 정보 + 관계 evidence 수집
  7. 답변
    • 상위 후보의 원문/관계 근거를 LLM에 전달
    • evidence_id를 인용해 최종 답변
# 원래 질문 (의미기반 검색 + 필터 검색)
# 원래 질문 LLM을 활용해서 -> 의미기반 검색 질문 + 그래프 기반 검색 질문으로 나눔

# 의미기반 검색 질문 -> 하이브리드 검색으로 점수 및 검색 결과를 도출
# 그래프 기반 검색 질문 -> TextToCypher를 활용해서 검색 결과를 도출 --> (필터 조건을 만족하는 검색 후보)

# 의미기반 후보들의 점수를 그래프 기반 후보들에 대입 (없는 요소면 0점으로 대입)
# 최종 후보들 도출

# 최종 후보들 PageRank의 포화함수 점수를 이용해서 재정렬 (선택사항)

# 정렬된 최종 후보들로 Context 생성

# LLM을 활용해서 최종 답변 

0개의 댓글