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

Add, Query, 그리고 세 가지 결과 모드

~22 min · chroma, queries

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

add contract

collection.add() 는 평행 리스트를 받아: ids, documents, metadatas, 옵션으로 embeddings. documents 만 주고 embeddings 안 주면 Chroma 가 default embedding function 호출 (이게 프로덕션에서 원하는 거 아님 — 항상 모델은 본인이 컨트롤).

query contract

collection.query()query_embeddings (또는 query_texts) 받고 top-k nearest 반환. 결과에 ids, documents, metadatas, distances 포함. distance 는 cosine DISTANCE 지 similarity 아냐 — 0 = 동일, 2 = 반대.

알아둘 결과 모드 셋

  • Default — ids, distances, embeddings 반환. 텍스트/메타데이터 받으려면 include=['documents','metadatas'] 전달.
  • Embedding-only — 별도 모델로 re-rank 할 때 유용.
  • Where-filtered — ranking 전 메타데이터로 pre-filter.

Code

명시적 임베딩으로 청크 add·python
vecs = model.encode([c['text'] for c in chunks], normalize_embeddings=True).tolist()

docs.add(
    ids       =[c['id']       for c in chunks],
    documents =[c['text']     for c in chunks],
    metadatas =[c['metadata'] for c in chunks],
    embeddings=vecs,
)
print(docs.count())
query 후 distance → similarity 변환·python
q_vec = model.encode(['how do I cancel?'], normalize_embeddings=True).tolist()

res = docs.query(
    query_embeddings=q_vec,
    n_results=5,
    include=['documents', 'metadatas', 'distances'],
)

for doc, meta, dist in zip(res['documents'][0], res['metadatas'][0], res['distances'][0]):
    similarity = 1 - dist
    print(f'{similarity:.3f}  {meta["source"]}  → {doc[:80]}')

External links

Exercise

collection 에 청크 100개 add (documents + metadata). 같은 질문의 5가지 phrasing 으로 query. 각각 top-3 ids + distance print. ranking 이 얼마나 안정적인지 봐 — 그 안정성 (또는 부재) 이 retrieval 신뢰도 신호.

Progress

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

댓글 0

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

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