검색과 RAG — Query로 지식 베이스 활용하기

검색과 RAG — Query로 지식 베이스 활용하기

라이브러리를 만들었다면 이제 그 안에서 원하는 정보를 찾아야 해요. llmware의 Query 클래스는 텍스트·시맨틱·하이브리드 검색을 비롯해 문서 필터나 메타데이터·커스텀 필터까지 포함한 다양한 쿼리를 지원해요. 여기서는 시맨틱 검색 예제를 중심으로 볼게요.

출처: https://github.com/llmware-ai/llmware/blob/main/docs/examples/retrieval.md

먼저 샘플 라이브러리를 만들고 임베딩을 설치해요. 벡터 DB로는 chromadb를, 임베딩 모델로는 industry-bert-sec를 써요. 랩톱 메모리가 부족하다면 배치 크기를 줄이거나 mini-lm-sbert 모델로 바꿀 수 있어요.

from llmware.library import Library
from llmware.retrieval import Query
from llmware.setup import Setup

# 1. 샘플 라이브러리 생성 + 임베딩 설치
library = Library().create_new_library("fin_docs_sample")
library.add_files("path/to/FinDocs")
library.install_new_embedding(embedding_model_name="industry-bert-sec", vector_db="chromadb", batch_size=200)

이제 Query 객체를 만들고 시맨틱 쿼리를 실행해요. 반환 키는 기본값으로 전체가 오지만, 원하는 키만 골라 설정할 수도 있어요.

# 2. Query 생성 후 시맨틱 검색
q = Query(library)
q.query_result_return_keys = ["distance", "file_source", "page_num"]
results = q.semantic_query("quarterly revenue guidance", result_count=10)

이렇게 해서 얻은 검색 결과를 프롬프트에 붙여 모델 추론에 쓰면 전형적인 RAG 흐름이 완성돼요. llmware는 이 Query 결과를 Prompt 객체에 바로 넣어 prompt_with_source로 추론하고, evidence_check_sources로 사실 확인(fact-check)까지 할 수 있게 설계돼 있어요.

from llmware.prompts import Prompt

prompter = Prompt().load_model("llmware/bling-tiny-llama-v0")
responses = prompter.prompt_with_source("my query")
fact_check = prompter.evidence_check_sources(responses)

더 알아보기