TL;DR
hubmesh는 기존 벡터 DB를 그대로 두고 중앙성 인식 GraphRAG 플래너를 중간에 삽입해 멀티홉 검색 품질을 개선하는 Python 라이브러리입니다. 쿼리 적합성, 구조적 적합성, 다양성 신호를 결합한 다성분 시드 선택과 토큰 예산을 고려한 컨텍스트 패킹으로 경로 기반 증거를 효과적으로 회수합니다. KG 모드가 HotpotQA·MuSiQue 멀티홉 벤치마크에서 naive cosine과 PPR-온리 절차를 앞섰으며 MCP 서버로 에이전트에 빠른 도구 호출을 제공하는 것이 특징입니다.
섹션별 상세
용어 해설
- GraphRAG
- — GraphRAG은 질의 시점에 지식 그래프 위에서 Personalized PageRank를 돌려 멀티홉 검색에서 관련 경로를 찾아내는 접근법입니다. 입력 질의와 그래프 구조를 기반으로 경로 상의 엔티티에 점수를 배분해 다단계 연쇄 추적을 허용합니다. 이 방식은 단일 문서 유사도 기준으로 놓치는 연결 고리를 회수하는 데 유리합니다.
- Personalized PageRank
- — Personalized PageRank는 그래프의 특정 시드 노드에 가중치를 두고 랜덤 워크 확률을 재분배하는 알고리즘입니다. 쿼리에서 추출한 시드들을 우선 방문하도록 확률을 조정해 관련 하위그래프를 부각합니다. 멀티홉 검색에서는 경로 중심의 중요도를 산출해 재귀적 연결을 찾아내는 데 활용됩니다.
- NNSI
- — NNSI는 네트워크 노드 중요도 지표로서 여러 신호를 결합해 토폴로지 최적화를 목표로 하는 프레임워크입니다. 본문에서는 시드 선택에서 쿼리 적합성, 구조적 적합성, 커버리지 다양성을 결합하는 다성분 점수로 전용해 활용합니다. 이렇게 하면 단일 유사도에 의존할 때 생기는 커뮤니티 오탐을 줄일 수 있습니다.
- 멀티홉 RAG(Multi-hop RAG)
- — 멀티홉 RAG는 단일 문서가 아니라 여러 문서를 경유해 추론 경로를 구성하는 질의응답 방식입니다. 쿼리에서 요구하는 정보를 연결해주는 중간 엔티티와 문서를 단계적으로 찾아야 정답에 도달합니다. 단순 상위 k 유사도 검색은 이런 경로를 놓치기 쉬워 그래프 기반 접근이 종종 필요합니다.
- 벡터 DB(Vector DB)
- — 벡터 DB는 텍스트 또는 문서 임베딩을 저장하고 근사 최근접 검색을 제공하는 저장소입니다. hubmesh는 기존 벡터 DB를 교체하지 않고 어댑터를 통해 플래너를 중간에 삽입해 작동합니다. 따라서 인프라 마이그레이션 없이 검색 전략만 개선할 수 있습니다.
코드 예제
from hubmesh import Planner
from hubmesh.adapters import InMemoryStore
embed = ... # callable: text -> np.ndarray
docs = [...] # list of Document or strings or dicts
store = InMemoryStore.from_documents(docs, embed=embed)
planner = Planner(store=store, embed=embed)
result = planner.retrieve(query="...", top_k=10, budget_tokens=4000)이 예제는 소규모 코퍼스나 테스트 목적에서 인메모리 어댑터를 쓰는 초기 설정 절차를 보여줍니다. 임베더를 제공해 문서들을 인메모리 스토어에 색인하고 Planner를 생성한 뒤 retrieve 호출로 토큰 예산을 지정해 컨텍스트 패킹을 수행합니다. 실제 운영에서는 동일한 Planner 인터페이스에 Qdrant나 Chroma 어댑터를 바꿔 연결하면 인프라 이전 없이 동작합니다.
from hubmesh import Planner
from hubmesh.adapters import QdrantStore
store = QdrantStore.from_documents(docs) # in-memory
store = QdrantStore.from_documents(docs, path="./qdrant_data") # on-disk
store = QdrantStore.from_documents(docs, url="http://localhost:6333") # remote
planner = Planner(store=store, embed=embed)
result = planner.retrieve(query="...", top_k=10)이 코드 스니펫은 Qdrant 어댑터로 실환경 색인과 조회를 연결하는 방법을 보여줍니다. 로컬 파일 기반, 원격 엔드포인트 등 다양한 배포 형태를 같은 API로 다루며 Planner는 그 위에 플래너 로직을 중립적으로 실행합니다. 결과로 얻는 RetrievalResult는 소스 문서와 reasoning path를 포함해 왜 특정 문서가 선택되었는지 추적할 수 있습니다.
근거 모음
- HotpotQA 전체 개발셋에서 hubmesh KG 모드는 supporting-fact recall@10을 69.3%에서 75.2%로 개선했다. — 벤치마크 표의 HotpotQA full dev recall@10 값; BENCHMARKS.md에 측정 방법과 ablation JSON이 포함되어 있음.
- 멀티시드 쿼리는 단일 시드 대비 약 1.5–1.8배의 비용이 든다. — 본문의 성능 공개 항목; 다중 시드 비용 비율.
- PPR 캐시를 사용하면 7K 노드 KG에서 쿼리 평균 레이턴시는 약 22 ms, p95는 26 ms이다. — 레이턴시 섹션의 수치 표기; 프로파일링 스크립트와 결과가 benchmarks/에 있음.
기술
- Python
- spaCy
- Qdrant
- Chroma
- embeddings
- LLM-extracted KG
활용 사례
- 멀티홉 질문응답 파이프라인에서 증거 경로를 찾아 정확도를 높이는 검색 전처리 도구로 사용 가능합니다.
- 에이전트 기반 워크플로에서 각 홉의 타깃 엔티티를 플래너가 결정하도록 해 반복 조회를 효율화할 수 있습니다.
- 제한된 LLM 컨텍스트 예산 내에서 중복을 줄이고 커버리지를 늘려 증거 문서를 배치하는 목적에 적합합니다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
