๐ค RAG with Gemini File Search ๊ธฐ๋ฐ ์๋ฃ ์ง๋จ ๊ธฐ๋ก ์นด์นด์คํก ์ฑ๋ด ๊ฐ๋ฐ ๊ธฐ๋ก 2๏ธโฃ
On this page
0/ ๊ธฐ์กด ๋ฐฉ์์ ํ๊ณ
๐ค RAG with Gemini File Search ๊ธฐ๋ฐ ์๋ฃ ์ง๋จ ๊ธฐ๋ก ์นด์นด์คํก ์ฑ๋ด ๊ฐ๋ฐ ๊ธฐ๋ก 1๏ธโฃ ์์๋, Google Drive์ ์ ์ฅ๋ ์๋ฃ ๋ฌธ์๋ฅผ Gemini File Search Store๋ฅผ ํ์ฉํด ์์ธํ๊ณ , ์นด์นด์คํก ์ฑ๋ด์์ ํ์ ์ธ์ฆ ํ ํด๋น ํ์์ ์๋ฃ ๊ธฐ๋ก๋ง ๊ฒ์ํ์ฌ ๋ต๋ณํ๋ RAG ๊ธฐ๋ฐ PoC๋ฅผ ๊ตฌํํ ๊ณผ์ ์ ์ ๋ฆฌํ๋ค.
์ฒ์ ๊ตฌํํ ์ ์ฒด ํ๋ฆ์ ์๋์ ๊ฐ์๋ค.
Google Drive
โโ ํ์๋ณ PDF ์ง๋จ ๊ธฐ๋ก
โ
Document Sync
โโ PDF ๋ณ๊ฒฝ ์ฌ๋ถ ํ์ธ
โโ Gemini File Search Store ์
๋ก๋
โ
Gemini File Search Store
โโ ํ์๋ณ Store ๋ถ๋ฆฌ
โ
KakaoTalk Chatbot
โโ ํ์ ์ธ์ฆ
โโ ํด๋น ํ์์ Store๋ง ์ฐ๊ฒฐ
โ
Gemini
โโ ๋ฌธ์ ๊ธฐ๋ฐ ๋ต๋ณ ์์ฑ๋น ๋ฅด๊ฒ MVP๋ฅผ ๋ง๋ค๊ธฐ์๋ ์ถฉ๋ถํ์ง๋ง, ์ค์ ๋ก ํ ์คํธํด๋ณด๋ ๋ชจ๋ธ์ด ์์ฑํ ์์ฐ์ด ๋ต๋ณ์ ๊ทธ๋๋ก ์นด์นด์คํก ๋ฉ์์ง๋ก ์ ์กํ๋ ๋ฐฉ์์ ํ๊ณ๊ฐ ์๋ค๊ณ ์๊ฐํ๋ค.

ํ ์คํธํ ๊ฒฐ๊ณผ, ์๋์ ๊ฐ์ ๋ฌธ์ ๋ค์ ํ์ธํ๋ค.
- ์นด์นด์คํก ํ๋ฉด์์ ๊ธด ๋ฌธ๋จ์ด ๊ทธ๋๋ก ์ถ๋ ฅ๋์ด ์ฌ์ฉ์๊ฐ ์ฝ๊ธฐ ์ด๋ ค์ ๋ค.
*,**๊ฐ์ ๋งํฌ๋ค์ด ๊ธฐํธ๊ฐ ์นด์นด์คํก ๋ฉ์์ง์ ์ฌ์ฉ๋๋๋ฐ ๋ณด๊ธฐ ์ด์ํ๋ค.- ํ์ ์ฑํจ ์ธ ๊ฐ์ธ์ ๋ณด๋ ์ฐจ๋จํ ํ์๊ฐ ์์๋ค.
- ์๋ฃ ๊ธฐ๋ก ์ ๋ฌธ์ ๊ทธ๋๋ก ๋ณต์ฌํด ์ถ๋ ฅํ๋ ์์ฒญ์ ๋ง์์ผ ํ๋ค.
- ์ฒ๋ฐฉ์ ๋ํ ์์ฌ, ๋ณ์ ๋ฐ ์๋ฃ์ง ๋น๋์ ๋์กฐํ์ง ์์์ผ ํ๋ค.
- ์๊ธ ์งํ๊ฐ ํฌํจ๋ ์ง๋ฌธ์ ์ผ๋ฐ ๋ต๋ณ๋ณด๋ค ์ฆ์ ์๋ฃ๊ธฐ๊ด ๋ฐฉ๋ฌธ ๊ถ๊ณ ํ ํ์๊ฐ ์์๋ค.
์๋ฃ ๊ธฐ๋ก ๊ธฐ๋ฐ ์ฑ๋ด์์๋ ๋จ์ํ ๋ต๋ณ์ ์์ฑํ๋ ๊ฒ์ ๋์ด,
- ๋ฌธ์์ ๊ธฐ๋ฐํ์ฌ ๋ตํ๋์ง?
- ์ฌ์ฉ์๊ฐ ๋ฌป๋ ๊ฒ์๋ง ํ์คํ ๋ตํ๋์ง?
- ๊ฐ์ธ์ ๋ณด๋ ์๋ฃ ๊ธฐ๋ก๊ณผ ๋ฌด๊ดํ ์ง๋ฌธ์ ์ฐจ๋จํ๋์ง?
๋ฅผ ๊ฒ์ฆํ ํ์๊ฐ ์๋ค๊ณ ๋๊ปด์ก๋ค.
๊ทธ๋์ ๋ชจ๋ธ ๋ต๋ณ์ ๋ฐ๋ก ์ ์กํ๋ ๋ฐฉ์์์ JSON ๊ตฌ์กฐํ ์ถ๋ ฅ์ผ๋ก ๋จผ์ ๋ฐ์ ํ ์๋ฒ์์ ํ๊ฒ์ฆํ์ฌ ๋ต๋ณ์ ์ ์กํ๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ๋ก ํ๋ค.
1/ ์ย gemini-3-flash-preview ๋ชจ๋ธ๋ก ๋ณ๊ฒฝํ๋?
(preview์์๋ ๋ถ๊ตฌํ๊ณ )
1๏ธโฃย gemini-2.5-flash ์ง์ ์ข
๋ฃ ํ ๋ฌ ๋จ์
๊ธฐ์กด์๋ gemini-2.5-flash๋ฅผ ์ฌ์ฉํ๊ณ ์์๋ค.
์๋, ๋น์ฉ, ์ถ๋ ฅ ์ ํ๋ ๋ชจ๋ ์ ์ ํ๊ณ , *File Search๋ ์ฌ์ฉํ ์ ์์๋ค.
*Gemini File Search๋ Google์์ ์ ๊ณตํ๋ โRAG-as-a-Serviceโ๋ก, ๋ฌธ์๋ฅผ import, chunking, indexingํ ๋ค ์ง๋ฌธ๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ๊ฒ์ํด ๋ชจ๋ธ ์ปจํ
์คํธ๋ก ๋ฃ์ด์ฃผ๋ RAG ๋๊ตฌ์ด๋ค.

https://ai.google.dev/gemini-api/docs/deprecations?hl=ko
ํ์ง๋ง gemini-2.5-flash์ด 26๋
6์์ ์ง์์ด ์ค๋จ๋๋ค๊ณ ํด,
6์ ์ดํ์๋ ๊ณ์ ์งํํ ๊ณํ์ด๋ฏ๋ก preview์ด๋๋ผ๋ gemini-3-flash ๋ชจ๋ธ๋ก ๋ฏธ๋ฆฌ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๋ซ๋ค๊ณ ์๊ฐํ๋ค.
2๏ธโฃย File Search์ JSON Structured Output ๋์ ์ฌ์ฉ

https://ai.google.dev/gemini-api/docs/structured-output?example=recipe
from google import genai
from pydantic import BaseModel, Field
from typing import List
class MatchResult(BaseModel):
winner: str = Field(description="The name of the winner.")
final_match_score: str = Field(description="The final match score.")
scorers: List[str] = Field(description="The name of the scorer.")
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.1-pro-preview",
contents="Search for all details for the latest Euro.",
config={
"tools": [
{"google_search": {}},
{"url_context": {}}
],
"response_mime_type": "application/json",
"response_json_schema": MatchResult.model_json_schema(),
},
)
result = MatchResult.model_validate_json(response.text)
print(result)๋ชจ๋ธ์ ๋ณ๊ฒฝํ ๋ ํฐ ์ด์ ๋ File Search์ JSON Structured Output์ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ํด์์๋ค.
๊ธฐ์กด gemini-2.5-flash์์๋ File Search์ ๊ฐ์ Gemini built-in tools์ ๋์์ ์ฌ์ฉํ๋ config๋ฅผ ์ง์ํ์ง ์์๋ค.
๊ทธ๋์ ํ๋กฌํํธ๋ ์๋ฒ์์ ๋ฐ๋ก JSON schema๋ฅผ ๊ฐ์ ํ์ด์ผ ํ๋๋ฐ ๋ถ์์ ํ ์ ์๋ค๊ณ ์๊ฐ๋์๋ค.
๋ฐ๋ฉด Gemini 3 ๋ชจ๋ธ๋ถํฐ๋ File Search์ ๊ฐ์ built-in tools์ Structured Outputs๋ฅผ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค.
๊ทธ๋์ ์์ง preview ๋ชจ๋ธ์ด๋ผ ์ด์ ์์ ์ฑ ๋ฌธ์ ๊ฐ ์์ ์ ์์ง๋ง gemini-3-flash-preview ๋ชจ๋ธ์ ์ฌ์ฉํ๊ธฐ๋ก ๋ง์ ๊ตณํ๋ค.
thinking_budget โก๏ธย thinking_level
๊ธฐ์กด gemini-2.5-flash ์ฝ๋์ ํฐ ์ฐจ์ด๋ ์์ง๋ง, geimini-3-flash๋ก ๋ณ๊ฒฝํ๋ฉด์ thinking_budget ์ด ์๋๋ผ thinking_level์ ์ฌ์ฉํ๋ค.
thinking_config=types.ThinkingConfig(thinking_budget=0), # -1, 0, 1024, ...โก๏ธ
thinking_config=types.ThinkingConfig(
thinking_level=thinking_level, # "minimal", "low", "medium", "high"
),2/ JSON ๊ตฌ์กฐํ๋ ์ถ๋ ฅ ๋ฐ ํ๋กฌํํธ ๊ฐ์
๊ธฐ์กด์๋ ๋ชจ๋ธ์ด ์์ฑํ ์์ฐ์ด ๋ต๋ณ์ ๊ทธ๋๋ก ์นด์นด์คํก ๋ฉ์์ง๋ก ์ ์กํ๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ธ ์ถ๋ ฅ์ ๋ ๊ฒ์ฆํ๊ณ , ์์ ํ๊ฒ ์ถ๋ ฅํ๊ธฐ ์ํด JSON ๊ตฌ์กฐ๋ก ๋ณ๊ฒฝํ๋ค.
1๏ธโฃย ํ๋ฅด์๋
๋ชจ๋ธ์ ํ๋ฅด์๋๋ โ์๋ฃ ๋ฌธ์ ํด์ค ์ ๋ฌธ๊ฐโ๋ก ์ค์ ํ๋ค. ๋ค๋ง, ๋ชจ๋ธ์ด ์์ฌ์ ์ญํ ์ ๋์ ํ์ง ์๋๋ก ํ๋ค. ์ฆ, ํ์๊ฐ ์๋ฃ ๋ฌธ์๋ฅผ ์ดํดํ๋๋ก ๋๋ ์๋ก์ด ์ง๋จ์ด๋ ์ฒ๋ฐฉ ๋ณ๊ฒฝ ๋ฑ์ ํ์ง ์๋๋ก ์ญํ ์ ์ ํํ๋ค.
๋ํ ํ ์คํธํ๋ฉด์ ๋ชจ๋ธ์ด ์กฐ๊ธ ๋ ์น์ ํ๊ฒ ์ค๋ช ํ๋ฉด ์ข๊ฒ ๋ค๊ณ ๋๊ปด ์ ๋ฌธ์ ์ผ๋ก ์ค๋ช ํ๋ฉด์ ํ์์ ๊ฑฑ์ ์๋ ๋ฐ๋ปํ๊ฒ ๊ณต๊ฐํ๋๋ก ํ๋ค.
- ์ ๋ฌธ์ฑ: ๋ชจ๋ ๋ต๋ณ์ ๊ทผ๊ฑฐ๋ ์ค์ง ์ ๊ณต๋ ์๋ฃ ๋ฌธ์ ๋ด์ ์์ด์ผํ๋ฉฐ ์ฐจ๋ถํ๊ณ ๊ฐ๊ด์ ์ผ๋ก ์ค๋ช
ํฉ๋๋ค.
- ์ ์คํ ๊ต์ : ์ฌ์ฉ์๊ฐ ์๋ชป๋ ์ํ ์ ๋ณด๋ ์คํด๋ฅผ ์ธ๊ธํ๋ฉด, ์ ๊ณต๋ ๋ฌธ์๋ฅผ ๊ธฐ๋ฐํ์ฌ ์ ์คํ๊ฒ ์ฌ์ค์ ๋ฐ๋ก์ก์์ผ ํฉ๋๋ค.
- ๋ฐ๋ปํ ๊ณต๊ฐ: ์ฌ์ฉ์์ ๊ฑฑ์ ์ ๊ณต๊ฐํ๋ฉฐ ๋ฐ๋ปํ๊ฒ ๋ต๋ณํ์ธ์.
- ์ญํ ์ ํ: ์๋ก์ด ์ง๋จ, ์ฒ๋ฐฉ ๋ณ๊ฒฝ ๋ฑ ์์ฌ์ ์ญํ ์ ๋์ ํ์ง ์์ต๋๋ค.
- ์ค๋ฆฝ์ฑ: ์๋ฃ์ง, ๋ณ์, ์๋ฃ ์ฒด๊ณ์ ๋ํ ๋นํ์ด๋ ๋ถ์ ์ ์ธ ์๊ฒฌ์ ๋์กฐํ๊ฑฐ๋ ์ธ๊ธํ์ง ๋ง์ธ์. ์ค๋ฆฝ์ ์ธ ํ๋๋ฅผ ์ ์งํฉ๋๋ค.2๏ธโฃย ์นด์นด์คํก ํ๋ฉด์์ ๋ณด๊ธฐ ํธํ ๋ต๋ณ ํ์

ํ ์คํธํ๋ฉด์ ์ ์ผ ๋๊ผ๋ ๋ฌธ์ ๋ ์นด์นด์คํก ํ๋ฉด์์์ ๊ฐ๋ ์ฑ์ด์๋ค. ๋ชจ๋ธ์ด ๋ณดํต ๊ธด ๋ฌธ๋จ์ผ๋ก ๋ต๋ณํ๊ฑฐ๋ ๋งํฌ๋ค์ด ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋๋ฐ, ์ด๋ ์นด์นด์คํก์์๋ ๋ณด๊ธฐ ์ด์ํ๋ค.
๊ทธ๋์ ์์ ๋๊ตฌ๋ฅผ ์ง์ ํ๊ณ , ์นด์นด์คํก์์ ๋ณด๊ธฐ ์ข์ ๋ต๋ณ์ ์์ฑํ๋๋ก ํ๋ค.
- ๋งํฌ๋ค์ด ์ฌ์ฉ ๊ธ์ง
- ๊ธด ๋ฌธ๋จ ๊ธ์ง
- ๋ฌธ๋จ ์ฌ์ด ์ค๋ฐ๊ฟ ์ฌ์ฉ
- ์ด๋ชจ์ง ์น์ ํค๋ ์ฌ์ฉ
- ์ค์ํ ํค์๋๋ [๋๊ดํธ]๋ก ๊ฐ์กฐ
- ๋ฆฌ์คํธ๋ ํ์ดํ ๊ธฐํธ(-) ์ฌ์ฉ

์ดํ ๋ต๋ณ์ด ์นด์นด์คํก ํ๋ฉด์์ ํจ์ฌ ์ฝ๊ธฐ ํธํ๋ค๊ณ ๋๊ผ๋ค.
3๏ธโฃย JSON Schema ์ ์
๋ชจ๋ธ ์ถ๋ ฅ์ ๋ค์ JSON ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฅด๋๋ก ํ๋ค.
{
"evidence": "ํ๋จ์ ๊ทผ๊ฑฐ๊ฐ ๋ ๋ฌธ์ ๋ด ์ค์ ๋ฌธ๊ตฌ",
"status": "ok | emergency | blocked | out_of_scope | cost_block | full_doc_block | cannot_verify",
"kakaotalk_render": "์นด์นด์คํก์ ํ์ํ ์ต์ข
๋ฉ์์ง",
"used_source_ids": ["์ฐธ์กฐํ ๋ฌธ์ ID"]
}์ฌ๊ธฐ์ status๋ โ์ํ ์ฝ๋โ ํ๋๋ก, ๊ฐ ์ํ์ ์๋ฏธ๋ ์๋์ ๊ฐ๋ค.
ok: ๋ฌธ์ ๊ทผ๊ฑฐ๋ฅผ ๋ฐํ์ผ๋ก ์ ์ ๋ต๋ณ ๊ฐ๋ฅ
cannot_verify: ์ ๊ณต๋ ๋ฌธ์์์ ํ์ธ ๋ถ๊ฐ
blocked: ์ฑํจ ์ธ ๊ฐ์ธ์ ๋ณด ์์ฒญ
emergency: ์๊ธ ์งํ ๊ฐ์ง
out_of_scope: ์๋ฃ ๊ธฐ๋ก๊ณผ ๋ฌด๊ดํ ์ง๋ฌธ
cost_block: ๋น์ฉ, ๋ณดํ, ์ฒญ๊ตฌ ๊ด๋ จ ์ง๋ฌธ
full_doc_block: ๋ฌธ์ ์ ๋ฌธ ๋๋ ์ ์ฒด ์๋ฌธ ์์ฒญ4๏ธโฃย ๊ฐ์ธ์ ๋ณด, ์๋ฃ ๊ธฐ๋ก๊ณผ ๋ฌด๊ดํ ์ง๋ฌธ ์ฐจ๋จ
์๋ฃ ๊ธฐ๋ก ๊ธฐ๋ฐ ์ฑ๋ด์์ ๋ตํ ์ ์๋ ์ง๋ฌธ ์ ํ์ ๊ตฌ๋ถํ์ฌ ๊ฐ์ธ์ ๋ณด ์์ฒญ, ์๋ฃ ๊ธฐ๋ก๊ณผ ๋ฌด๊ดํ ์ง๋ฌธ ๋ฑ์๋ Gemini ์์ฑ ๋ต๋ณ์ด ์๋๋ผ ๊ณ ์ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ์ฌ ์ฒ๋ฆฌํ๋ค.


5๏ธโฃย ์๋ฒ ํ๊ฒ์ฆ & ์ถ์ฒ ํ์
JSON ๊ตฌ์กฐํ ์ถ๋ ฅ์ ๋ฐ๊พผ ์ด์ ์ค ํ๋๋ ์๋ฒ์์ ํ๊ฒ์ฆํ๊ธฐ ์ํด์์๋ค.
1. status๊ฐ ok์ธ์ง ํ์ธํ๋ค.
2. ok๊ฐ ์๋๋ฉด ์๋ฒ์ ์ ์๋ ๊ณ ์ ๋ฉ์์ง๋ฅผ ๋ฐํํ๋ค.
3. ok์ธ๋ฐ evidence๊ฐ ๋น์ด ์์ผ๋ฉด cannot_verify๋ก ์ฒ๋ฆฌํ๋ค.
4. kakaotalk_render๊ฐ ๋น์ด ์์ด๋ cannot_verify๋ก ์ฒ๋ฆฌํ๋ค.
5. ๋ด๋ถ ์๋ณ์๋ ๊ธ์ง ํ ํฐ์ด ํฌํจ๋์ด ์์ผ๋ฉด cannot_verify๋ก ์ฒ๋ฆฌํ๋ค.
6. used_source_ids๊ฐ READY ๋ฌธ์ ๋ชฉ๋ก๊ณผ ๋งค์นญ๋๋์ง ํ์ธํ๋ค.
7. ๊ฒ์ฆ๋ source๋ง ์ฌ์ฉํด ์๋ฒ๊ฐ ์ถ์ฒ ์น์
์ ๋ง๋ ๋ค.๋ชจ๋ธ์ด JSON์ ๋ฐํํ ํ ๋ฐ๋ก ์นด์นด์คํก์ผ๋ก ์ ์กํ์ง ์๊ณ ์๋ฒ์์ ์ต์ข ๊ฒ์ฆํ ๋ค ์ ์กํ๋๋ก ํ๋ค.
์ถ์ฒ๋ ๋ชจ๋ธ์ด ์๋๋ผ ์๋ฒ๊ฐ ๋ ๋๋ง

์ฒ์์๋ ๋ชจ๋ธ์ด ์ถ์ฒ๊น์ง ๋ฉ์์ง์ ํฌํจํ๋๋ก ํ๋๋ฐ, ํ ์คํธํ๋ฉด์ ๋์ผํ ๋ฌธ์๊ฐ ์ค๋ณต ์ถ๋ ฅ๋๋, ๋ชจ๋ธ์ด ๋ฉ๋๋ก ์ถ์ฒ๋ฅผ ๊พธ๋ฉฐ๋ผ ์ ์๋ ๋ฑ ๋ฌธ์ ๊ฐ ์์๋ค.
๊ทธ๋์ ์ถ์ฒ ์น์ ์ ์์ ํ๊ฒ ์๋ฒ๊ฐ ๋ง๋ค๋๋ก ์์ ํ๋ค. READY ๋ฌธ์ ๋ชฉ๋ก๊ณผ ๋งค์นญ๋ source๋ง ์ฌ์ฉํด ์๋์ ๊ฐ์ ํํ๋ก ์ ๋ฆฌํ๋ค.
๐ ์ถ์ฒ (2๊ฑด)
1. ๊ฒ์ฌ๊ฒฐ๊ณผ์ง, 2026-04-29
2. ์ง๋ฃ๊ธฐ๋ก๋ถ, 2026-04-29