C.W.K.
Stream
Lesson 05 of 05 · published

Query-side 트릭: HyDE 와 Multi-Query

~20 min · hybrid, queries, advanced

Level 0Scout
0 XP0/41 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

query 가 시스템의 절반

대부분 팀이 document 측 (더 좋은 임베딩, 더 좋은 청킹) 만 최적화 + query 측 잊음. Query 도 임베딩 모델이 인코딩하는 string — 짧고 모호한 query 는 임베딩 잘 안 됨. 두 개의 싼 고침이 retrieval 품질을 사람들 예상보다 더 바꿈.

Multi-query expansion

LLM 한테 유저 query 를 3–5 가지 다른 phrasing 으로 rewrite 요청. 각각 임베딩. 각각 검색. RRF 로 ranking fuse. 비용: extra LLM 호출 한 번. Win: 모호한 또는 짧은 query 에서 유의미하게 높은 recall.

HyDE (Hypothetical Document Embeddings)

query 임베딩 대신, LLM 한테 query 에 대한 가설적 답 작성 요청, 그 답 임베딩 + 그걸로 검색. 작동 이유: 답과 document 가 lexical + structural 패턴 공유; 질문은 그렇지 않음. query 짧고 document 길 때 특히 강함.

Code

Multi-query expansion·python
def expand_query(query: str, n: int = 4) -> list[str]:
    prompt = (
        f'Rewrite this query in {n} different ways that might appear in a knowledge base. '
        f'Output one rewrite per line, no numbering.\n\nQuery: {query}'
    )
    response = llm.complete(prompt)
    return [line.strip() for line in response.splitlines() if line.strip()][:n]

rewrites = expand_query('how do I cancel my plan')
rankings = [vector_search(r, k=20) for r in [query] + rewrites]
final = reciprocal_rank_fusion([[r['id'] for r in ranking] for ranking in rankings])
HyDE·python
def hyde(query: str) -> str:
    prompt = (
        f'Write a 3-sentence factual answer to this question, even if you have to invent details. '
        f'Style it like a knowledge-base article.\n\nQuestion: {query}'
    )
    return llm.complete(prompt)

hypothetical = hyde('how do I cancel my plan')
results = vector_search(hypothetical, k=10)   # 질문 아니라 가설적 답으로 검색

External links

Exercise

본인 진짜 유저의 짧고 모호한 query 10개. 각각 multi-query rewrite 3개 + HyDE 답 1개 생성. top-3 결과 비교: original, multi-query+RRF, HyDE. 어느 query 타입에서 어느 트릭이 이기는지 노트.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.