๐ค RAG with Gemini File Search ๊ธฐ๋ฐ ์๋ฃ ์ง๋จ ๊ธฐ๋ก ์นด์นด์คํก ์ฑ๋ด ๊ฐ๋ฐ ๊ธฐ๋ก 1๏ธโฃ
On this page
0/ Building an EMR(Electronic Medical Record) RAG-Based KakaoTalk Chatbot with Gemini File Search

ํ์๊ฐ ์นด์นด์คํก ์ฑ๋ด์ ํตํด ์์ ์ ์ง๋จ ๊ธฐ๋ก์ ๋ํด ์ง๋ฌธํ๋ฉด, Gemini File Search๋ฅผ ์ด์ฉํด ๋ฌธ์ ๊ธฐ๋ฐ ๋ต๋ณ์ ์์ฑํ๋ PoC (Proof of Concept)๋ฅผ ๊ตฌํํ ๊ณผ์ ์ ์ ๋ฆฌํ๊ณ ์ ํ๋ค.
Google Drive์ ์ ์ฅ๋ ํ์๋ณ ์ง๋จ ๊ธฐ๋ก PDF ํ์ผ์ Google Gemini File Search Store์ ๋๊ธฐํํ๊ณ , ์นด์นด์คํก ์ฑ๋ด์์ ํ์ ์ธ์ฆ ํ ํด๋น ํ์์ ์ง๋จ ๊ธฐ๋ก๋ง ๊ฒ์ํ์ฌ ๋ต๋ณํ๋ RAG ๊ธฐ๋ฐ ์๋ฃ ๊ธฐ๋ก ์ฑ๋ด์ ์ฐ์ ๋ง๋ค๊ธฐ๋ก ํ๋ค.
์ ์ฒด ํ๋ฆ
Google Drive
โโ ํ์๋ณ PDF ์ง๋จ ๊ธฐ๋ก
โ
Document Sync
โโ PDF ๋ณ๊ฒฝ ์ฌ๋ถ ํ์ธ
โโ Gemini File Search Store ์
๋ก๋
โ
Gemini File Search Store
โโ ํ์๋ณ Store ๋ถ๋ฆฌ
โ
KakaoTalk Chatbot
โโ ํ์ ์ธ์ฆ
โโ ํด๋น ํ์์ Store๋ง ์ฐ๊ฒฐ
โ
Gemini
โโ ๋ฌธ์ ๊ธฐ๋ฐ ๋ต๋ณ ์์ฑ1/ RAG (Retrieval-Augmented Generation)
Retrieval-Augmented Generation์ LLM์ด ๋ต๋ณ์ ์์ฑํ๊ธฐ ์ ์ ์ธ๋ถ ์ง์ ๋ฒ ์ด์ค์์ ๊ด๋ จ ๋ฌธ์๋ฅผ ๋จผ์ ๊ฒ์ํ๊ณ , ๊ทธ ๊ฒ์ ๊ฒฐ๊ณผ์ธ ์ธ๋ถ ์ง์์ ๋ชจ๋ธ์ ์ ๋ ฅ context๋ก ์ ๊ณตํ์ฌ ๋ต๋ณ์ ์์ฑํ๋ ๋ฐฉ์์ด๋ค.
์ฆ, ์ง์ ์ ์ฅ์๋ ์ธ๋ถ์ ๋ฐ๋ก / ๋ชจ๋ธ์ ์ง์ ์ ์ฅ์๋ก๋ถํฐ ์ง์์ ๊ทธ๋๊ทธ๋ ์ฐพ์์ ๊ฒ์ํ๊ณ , ๋ต๋ณ์ ์์ฑํ๋ ๋ฐฉ์์ด๋ค.
๐๏ธย ์ RAG๊ฐ ํ์ํ๊ฐ?
์๋ฃ ์ง๋จ ๊ธฐ๋ก ๊ธฐ๋ฐ ๋ง์ถคํ ๋ต๋ณ์ ์ํด์ RAG๊ฐ ํ์ํ๋ค. ๋ชจ๋ธ์ด ์ฌ์ ์ ์๊ณ ์๋ ์ง์์ด ์๋๋ผ ํน์ ํ์์ ์ง๋จ ๊ธฐ๋ก๊ณผ ๊ฐ์ ์ธ๋ถ ๋ฐ์ดํฐ๋ฅผ ๊ทผ๊ฑฐ๋ก ๋ต๋ณ์ ์์ฑํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ โ๋ด ์ต๊ทผ ์ง๋จ ๊ธฐ๋ก์์ ์ด๋ค ๋ณ์ด ์๋์ง ์๋ ค์ค.โ๋ผ๊ณ ๋ฌป๋๋ค๋ฉด, ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ธ์ ์ถ์ธกํด์ ๋ตํ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ค. ๊ทธ๋ฌ๋ RAG๋ฅผ ์ ์ฉํ๋ค๋ฉด ํ์์ ์ง๋จ ๊ธฐ๋ก์ ๊ฒ์ํ ๋ค, ๊ทธ ๊ธฐ๋ก์ ๋ฐํ์ผ๋ก ๋ตํ๋ค.
1๏ธโฃย ํ์ต๋ ์์ ๊น์ง์ ์ ๋ณด๋ฅผ ๋ฐ์ํ์ฌ ์ต์ ์ง์์ด ๋ถ์กฑํ ๋ฌธ์ .
๋ชจ๋ธ์ ํ์ต๋ ์์ ๊น์ง์ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ์ฌ ํ์ต ์ดํ์ ์ต์ ์ง์์ด ๋ถ์กฑํ๋ค. ๊ทธ๋์ RAG๋ฅผ ํตํ์ฌ ์ต์ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ฃผ์ ํ ํ์๊ฐ ์๋ค.
2๏ธโฃย ํ ๋ฃจ์๋ค์ด์ ํ์
LLM์ ํญ์ ๊ทธ๋ด๋ฏํ์ง๋ง ํ๋ฆฐ ๋ต์ ๋ง๋๋ ํ ๋ฃจ์๋ค์ด์ (ํ๊ฐ) ํ์์ด ์๋ค. ๊ทธ๋์ RAG๋ฅผ ํตํ์ฌ ์ ํํ ๊ทผ๊ฑฐ ๋ฌธ์๋ฅผ ์ ๊ณตํ์ฌ ๋ต๋ณ์ ์ฌ์ค ๊ฐ๋ฅ์ฑ์ ๋์ฌ์ผ ํ๋ค.
3๏ธโฃย ๋๋ฉ์ธ ํนํ ์ง์
์๋ฃ ๋ฐ ๋ฒ๋ฅ ๊ณผ ๊ฐ์ด ํน์ ๋๋ฉ์ธ์ ํนํ๋ ๊ฒฝ์ฐ์๋ ์ผ๋ฐ์ ์ง์์ด ์๋๋ฏ๋ก, ๋ชจ๋ธ์ ๋ด์ฌ ์ง์๋ง์ผ๋ก๋ ๋ถ์กฑํ๋ค.
4๏ธโฃย ์ถ์ฒ ํ์ธ
RAG๋ฅผ ์ ์ฉํ๋ฉด โ์ ๊ทธ๋ ๊ฒ ๋ต๋ณํ๋์งโ ๋ต๋ณํ ๋ ์ฐธ๊ณ ํ ๋ฌธ์๋ฅผ ์ถ์ ํ ์ ์๋ค.
RAG ๊ธฐ๋ณธ ํ๋ก์ธ์ค

Retrieval-Augmented Generation for Large Language Models: A Survey (2023)

A Survey on Retrieval-Augmented Text Generation for Large Language (2024)
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ RAG๋ โIndexing โ Retrieval โ Generationโ ์ธ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋๋ค.
1๏ธโฃย Indexing
Indexing์ ๋ชจ๋ธ์ด ์ธ๋ถ ๋ฌธ์๋ฅผ ๊ฒ์ํ ์ ์๋ ํํ๋ก ๋ณํํ๊ณ ์ ์ฅํ๋ ๊ฒ์ด๋ค. ๊ธด ๋ฌธ์๋ ์์ ๋จ์์ธ chunk๋ก ๋๋๊ณ , ๊ฐ chunk๋ embedding์ ํตํด ๋ฒกํฐ๋ก ๋ณํํ ํ ๋ฒกํฐ DB์ ์ ์ฅ๋๋ค.
Documents โ Chunks โ Embeddings โ Vector DB
2๏ธโฃย Retrieval
Query๊ฐ ๋ค์ด์ค๋ฉด, ํด๋น Query์ ๊ฐ์ฅ ๊ด๋ จ์ฑ์ด ๋์ (์ ์ฌํ) ๋ฌธ์ chunk๋ฅผ ๊ฒ์ํ๋ค. ์ผ๋ฐ์ ์ผ๋ก Query๋ก embeddingํ ๋ค, ๋ฒกํฐ DB์ ์ ์ฅ๋ chunk embedding๋ค๊ณผ ์ ์ฌ๋๋ฅผ ๋น๊ตํ์ฌ Top-k๊ฐ์ ๊ด๋ จ ๋ฌธ์๋ฅผ ๊ฐ์ ธ์จ๋ค.
Query Input โ Query Embedding โ Top-k chunks Retrieval
3๏ธโฃย Generation
๊ฒ์๋ ๋ฌธ์ chunk๋ฅผ ๋ชจ๋ธ์ ์ ๋ ฅ context๋ก ์ ๊ณตํ์ฌ, ์ฌ์ฉ์์ Query์ ํจ๊ป ๋ชจ๋ธ์๊ฒ ์ ๋ฌ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ธ์ ์ธ๋ถ ์ง์์ ์ฐธ๊ณ ํ์ฌ ๋ต๋ณ์ ์์ฑํ ์ ์๋ค.
Query + Relevant Documents โ LLM โ Answer Generation
4๏ธโฃย Pre-Retrieval (Indexing, Query Manipulation, Data Modification)
Retrieval ์ ์ ๋ฌธ์์ query๋ฅผ ๊ฒ์์ด ๋ ์ ๋๋๋ก ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ด๋ค.
Query Manipulation์ ์ฌ์ฉ์์ ์ง๋ฌธ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ช ํํ๊ฒ ๋ง๋ค์ด ๋ ์ ํํ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค. ํด๋น ์ฑ๋ด์๋ Query Manipulation๋ฅผ ํ๋ค. ์ฌ์ฉ์ ์ง๋ฌธ์ ๋ ๋ช ํํ๊ฒ ๋ณด์ถฉํ์ฌ ๊ฒ์๊ณผ ๋ต๋ณ ํ์์ ๋ ์ ํฉํ๊ฒ ๋ง๋ค์๋ค.
5๏ธโฃย Post-Retrieval (Re-Ranking, Filtering, Context Compression)
๊ฒ์๋ ๋ฌธ์ ๊ทธ๋๋ก๋ฅผ ๋ชจ๋ธ์ ์ฃผ์ ํ์ง ์๊ณ , ๋ ์ค์ํ ๋ฌธ์๋ง ์ ํํ๊ฑฐ๋ ์ ์ ํ์ฌ ์ ๊ณตํ๋ ํ์ฒ๋ฆฌ ๊ณผ์ ์ด๋ค.
- Re-Ranking: ์ฒ์ ๊ฒ์๋ Top-K ๋ฌธ์๋ฅผ Query์์ ์ ์ฌ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ค์ rankingํ๋ ๊ฒ์ด๋ค.
- Filtering : Query์ ๊ด๋ จ ์๋ ๋ฌธ์๋ฅผ ํํฐ๋งํ๋ ๊ฒ์ด๋ค.
- Context Compression : ๊ธด ๋ฌธ์๋ฅผ ์์ฝํ๊ฑฐ๋ ํ์ํ ๋ด์ฉ๋ง ์ถ์ถํ๋ ๊ฒ์ด๋ค.
2/ Google Gemini File Search?
Gemini File Search๋ ํ ๋ง๋๋ก Google์์ ์ ๊ณตํ๋ โRAG-as-a-Serviceโ๋ผ๊ณ ํ ์ ์๋ค. ์ง์ ๋ฒกํฐ DB์ ๊ตฌ์ถํ๊ณ , chunking, embedding, retrieval ๋ก์ง ๊ตฌํ ๋ฑ ๊ธฐ์กด RAG ํ์ดํ๋ผ์ธ์ ๊ตฌํํ ํ์ ์์ด, ํ์ผ์ File Search Store์ ์ ๋ก๋ํ๋ฉด Gemini๊ฐ ๋ชจ๋ธ์ด ๊ฒ์ ๊ฐ๋ฅํ๋๋ก ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ๋ค.
ํ์ผ์ File Search Store์ ์ ๋ก๋ํ๋ฉด Gemini๊ฐ chunking, embedding, indexingํ๊ณ ๋ต๋ณ์ ์์ฑํ ๋ ํด๋น Store์์ ๊ด๋ จ ์ ๋ณด๋ฅผ ๊ฒ์ํด ๋ต๋ณ ์์ฑ์ ํ์ฉํ๋ค.
๐งย ์ Gemini File Search๋ฅผ ์ฌ์ฉํ๋?
- ๋ณ๋์ ๋ฒกํฐ DB๋ฅผ ์ด์ํ์ง ์์๋ ๋๋ค.
- ์ ์ง ๋ณด์ ๋น์ฉ์ ์ ์ฝํ ์ ์๋ค.
- chunking, embedding, retrieval ํ์ดํ๋ผ์ธ์ ๊ตฌํํ์ง ์์๋ ๋๋ค.
- ํ์๋ณ File Search Store๋ฅผ ๋ถ๋ฆฌํด ๊ด๋ฆฌํ๊ธฐ ์ฉ์ดํ๋ค.
- Google Drive์ ์ฐ๋์ฑ์ด ์ข๋ค.
ํนํ ํ์๋ณ๋ก ์๋ฃ ๊ธฐ๋ก์ด ์ ๋ถ๋ฆฌ๋์ด์ผ ํ๋ฏ๋ก, ํ๋์ Store์ ๋ชจ๋ ํ์๋ค์ ์๋ฃ ๊ธฐ๋ก์ ๋ฃ์ง ์๊ณ , ํ์๋ง๋ค Store๋ฅผ ๋๋์ด ๋ง๋๋ ๊ตฌ์กฐ๋ก ์งํํ๋ค.
ํ์๊ฐ ์ง๋ฌธ์ ์
๋ ฅํ๋ฉด ํด๋น ํ์์ file_search_store_name๋ง Gemini ๋ชจ๋ธ์๊ฒ ์ ๋ฌํ์ฌ, ๋ค๋ฅธ ํ์์ ๋ฌธ์๋ค์ ๊ฒ์ ๋์์ด ๋์ง ์๋๋ก ํ๋ค.
๐งย File Search Store vs. Files API
์ฒ์์๋ Gemini Files API๋ฅผ ์ฌ์ฉํ๋ค. Files API๋ ํ์ผ ์์ฒด๋ฅผ Gemini์ ์ ๋ก๋ํ์ฌ ๋ต๋ณ์ ์์ฑํ ๋ ํด๋น ํ์ผ์ ์ฐธ์กฐํ ์ ์๋๋ก ๋ง๋๋ ๊ธฐ๋ฅ์ด๋ค.
๋ฐ๋ก ํ์ผ์ ๋ชจ๋ธ์๊ฒ ์ฒจ๋ถํ ์ ์์ด์ ๊ตฌํ๋ ๋น ๋ฅด๊ณ ๊ฐ๋จํ๋ค.
๊ทธ๋ฌ๋ Files API๋ ๋จ์ผ ์์ฒญ ๋๋ ๋จ๊ธฐ๊ฐ ์ฌ์ฉํ๋ ํ์ผ ์ฒจ๋ถ ๊ธฐ๋ฅ์ด๋ค. ์ ๋ก๋ํ ํ์ผ์ ์ต๋ 48์๊ฐ๋์๋ง ์ ์ง๋๊ณ ์ดํ์๋ ์๋ ์ญ์ ๋๋ค. ๋ํ ์ ๋ก๋ํ ํ์ผ์ ๋ค์ ๋ค์ด๋ก๋ํ ์ ์๋ค.
์๋ฃ ์ง๋จ ๊ธฐ๋ก ์ฑ๋ด์ ๋จ์ํ ์๋ฃ ์ง๋จ ๊ธฐ๋ก ์ฒจ๋ถ ํ ๋ต๋ณ ์์ฑ์ด ์๋๋ผ, ํ์๋ณ๋ก ์ฌ๋ฌ ์๋ฃ ๊ธฐ๋ก์ ์ ์ฅํด๋๊ณ , ํ์๊ฐ ์ง๋ฌธํ ๋๋ง๋ค ํด๋น ํ์์ ์ง๋จ ๊ธฐ๋ก ์ค ๊ด๋ จ๋ ๋ด์ฉ์ ๊ฒ์ํด ์ฌ์ฉํด์ผ ํ๋ค.
๋ฐ๋ผ์ Gemni File Search Store๋ฅผ ์ฌ์ฉํ๋ค.
File Search Store๋ ์ง์ Store๋ฅผ ์ญ์ ํ์ง ์๋ ํ ์ฅ๊ธฐ์ ์ผ๋ก ๋ฌธ์๋ฅผ ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ, ํ์ผ์ ์ ๋ก๋ํ๋ฉด chunking, embedding, indexing์ ๋ด๋ถ์ ์ผ๋ก ์งํํด RAG๋ฅผ ์ ์ฉํ๋ ๋ฐ ์ ํฉํ๋ค.
3/ Gemini File Search ๊ตฌํ ๊ณผ์
Gemini File Search๋ฅผ ์ค์ฌ์ผ๋ก ๊ตฌํ ๊ณผ์ ์ ์ ๋ฆฌํ๊ณ ์ ํ๋ค. ๊ฐ๋จํ๊ฒ ํ๋ฆ์ ์ ๋ฆฌํ๋ฉด, ์๋์ ๊ฐ๋ค.
- ํ์๋ณ File Search Store ์์ฑ
- Google Drive PDF ๋ค์ด๋ก๋ ํ Store ์ ๋ก๋
- ํ์๊ฐ ์ง๋ฌธ์ ์ ๋ ฅํ๋ฉด ํด๋น ํ์์ Store๋ฅผ Gemini File Search tool๋ก ์ฐ๊ฒฐ
1๏ธโฃย ํ์๋ณ File Search Store ์์ฑ
client = genai.Client(api_key=gemini_api_key)
# store ์์ฑ
store = client.file_search_stores.create(
config={"display_name": f"patient-{patient_id}"}
)
file_search_store_name = store.namegenai.Client(api_key=...)๋ก Gemini client๋ฅผ ๋ง๋ค๊ณ , file_search_stores.create()๋ก Store๋ฅผ ์์ฑํ๋ค. ์์ฑ๋ Store ์ด๋ฆ์ fileSearchStores/... ํํ์ด๋ค.
2๏ธโฃย Google Drive PDF ๋ค์ด๋ก๋ ํ Store ์ ๋ก๋
๋จผ์ , Google Drive API๋ฅผ ํ์ฉํ์ฌ PDF ํ์ผ์ bytes๋ก ๋ค์ด๋ก๋ํ๋ค. ์ด๋ฅผ ์ ๋ก๋ํ๊ธฐ ์ํด ์์ ํ์ผ๋ก ์ ์ฅํ ๋ค multipart ์์ฒญ body์ ๋ฃ์ด Gemini File Search Store์ ์ ๋ก๋ํ๋ค.
# ํ์ผ ์
๋ก๋ + ์๋ ์ธ๋ฑ์ฑ
operation = client.file_search_stores.upload_to_file_search_store(
file=temp_path,
file_search_store_name=file_search_store_name,
config={"display_name": display_name},
)
# ์ธ๋ฑ์ฑ ์๋ฃ ๋๊ธฐ
while not operation.done:
time.sleep(5)
operation = client.operations.get(operation)PDF๋ฅผ File Search Store์ ์ ๋ก๋ํ๋ฉด ๋ด๋ถ์ ์ผ๋ก chunking, embedding, indexing ๋ฑ ์์ ์ด ์ด๋ฃจ์ด์ง๋ค. ์ฆ ์ ๋กธ๋ํ์๋ง์ ๋ฐ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ์ง ์๊ณ , operation์ด๋ผ๋ ์์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. ๊ทธ๋์ operation์ด ์๋ฃ๋ ๋๊น์ง pollingํด์ผ ํ๋ค. (๊ธฐ๋ค๋ ค์ผ ํ๋ค.)
*uploadToFileSearchStore๋ ํ์ผ ์
๋ก๋ + File Search Store์ import + chunking, embedding, indexing์ ํ ๋ฒ์ ์ฒ๋ฆฌํ๋ค.
3๏ธโฃย ์ง๋ฌธ ๋ค์ด์ค๋ฉด File Search tool ์ฐ๊ฒฐ
response = client.models.generate_content(
model=model,
contents=prompt,
config=types.GenerateContentConfig(
system_instruction=system_instruction,
tools=[
types.Tool(
file_search=types.FileSearch(
file_search_store_names=[file_search_store_name],
top_k=top_k,
)
)
],
temperature=0.1,
max_output_tokens=4096,
thinking_config=types.ThinkingConfig(thinking_budget=0),
),
)์ง๋ฌธ์ด ๋ค์ด์ค๋ฉด Gemini ๋ชจ๋ธ์ด ์๋ต์ ์์ฑํ๋ generate_content์ ํธ์ถํ๊ณ ,
์ด๋, types.Tool(file_search=types.FileSearch(...)) ํํ๋ก ์ง๋ฌธ์ ์
๋ ฅํ ํ์์ file_search_store_name์ ์ฐ๊ฒฐํ๋ค.
์๋ฅผ ๋ค์ด ํ์ A๊ฐ ์ง๋ฌธํ๋ฉด, ํ์ A์ File Search Store๋ง ๊ฒ์ํ๊ณ , ๋ค๋ฅธ ํ์์ ์๋ฃ ๊ธฐ๋ก์ ๊ฒ์ํ์ง ์๋๋ค.
4/ ๊ตฌํ ์ค ๋ฐ์ํ ์ด์๋ค
1๏ธโฃย GEMINI API Key ๋ฌธ์
Gemini REST request failed method=POST status=401 attempt=1/3 body={
"error": {
"code": 401,
"message": "The request does not have valid authentication credentials.",
"status": "UNAUTHENTICATED"
}
}์ฒ์์๋ File Search Store import ๊ณผ์ ์์ 401 ์๋ฌ๊ฐ ๊ณ์ ๋ฐ์ํ์๋ค. ์ฝ๋ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํด ์ฝ๋๋ฅผ ๋ช ์๊ฐ๋์ ๊ณ์ ์ดํด๋ณด์๋ค.

๊ทธ๋ฌ๋ค๊ฐ Google AI Developers Forum์์ AQ. prefix API Key๊ฐ File Search Store ์
๋ก๋์ ์คํจํ๋คโ๋ ์ด์ ๊ธ์ ๋ณด๊ฒ ๋์๋ค. ์๊ณ ๋ณด๋ GEMINI API Key ๋ฌธ์ ์๋ ๊ฒ์ด์๋ค.

Google ์ธก์์ ํ์ฌ AQ. prefix key issue๋ ํ์ฌ ํด๊ฒฐ ์ค์ด๋ผ non-AQ key๋ฅผ ์ฌ์ฉํ๋ผ๋ ๋ต๋ณ์ด ์์๋ค.

๊ทธ๋์ Google AI Studio์์ AIza... GEMINI API Key๋ฅผ ์์ฑํด (Google Cloud Console์์๋ AQ. prefix GEMINI API Key๋ง ์์ฑ๋์๋ค?) ์ฝ๋๋ฅผ ๋๋ฆฌ๋ File Search Store์ ํ์ผ์ importํ ์ ์์๋ค.
2๏ธโฃย Callback API ์ค์
AI ์ฑ๋ด ์ฝ๋ฐฑ ๊ฐ๋ฐ ๊ฐ์ด๋

์์ฑํ AI ๋ชจ๋ธ์ ํ์ฉํด ๋ต๋ณ์ ์ ์กํ๋ ๊ฒฝ์ฐ, ๋ต๋ณ์ ์์ฑํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์๋ค. ํนํ RAG ๊ธฐ๋ฐ ๋ต๋ณ์ ๊ด๋ จ ๋ฌธ์๋ฅผ ๊ฒ์ํ ๋ค ๋ต๋ณ์ ์์ฑํ๋ฏ๋ก, ์ผ๋ฐ์ ์ผ๋ก ์๊ฐ์ด ๋ ๊ฑธ๋ฆฌ๋ ํธ์ด๋ค.
์นด์นด์ค ์ฑ๋ด ํ๋ซํผ์์ ๋ต๋ณ ์ ์ก ์๊ฐ์ด 5์ด๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ์ timeout ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ๊ทธ๋์ 5์ด๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ AI ์ฑ๋ด Callback ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธธ ๋ฐ๋๋ค. ์ฒ์์๋ Callback URL์ ๋ชฐ๋ผ์ ๋นํญํ๋ค. (์ด๋ป๊ฒ 5์ด ์์ ๋ฉ์์ง๋ฅผ ์ ์กํ์ง?)
์ฑ๋ด > ์ค์ > AI ์ฑ๋ด ๊ด๋ฆฌ์์ AI ์ฑ๋ด์ผ๋ก ์ ํํ์ฌ Callback ์ต์ ์ ์ค์ ํ๋ฉด 5์ด๋ฅผ ์ด๊ณผํ ๋์๋ ๋ต๋ณ์ ์ ์กํ ์ ์์ผ๋ฉฐ callback URL์ 1ํ์ ์ต๋ 1๋ถ๋์ ์ ํจํ๋ค. ์ฆ, ๋ต๋ณ์ ์์ฑํ๋ ๋ฐ ์ต๋ 1๋ถ๊น์ง ์๊ฐ์ด ๊ฑธ๋ ค๋ ๋๋ค๋ ๋ง์ด๋ค.

์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ โ๋ด ๊ฒ์ฌ ๊ฒฐ๊ณผ ์ค๋ช ํด์คโ ์ ๊ฐ์ด ์ง๋ฌธํ๋ฉด, ์์ฑํ ๋ชจ๋ธ์ด ๋ต๋ณ์ ์์ฑํ๊ธฐ๊น์ง ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฏ๋ก, ์ต์ข ๋ต๋ณ์ ๋ฐ๋ก ๋ฐํํ์ง ์๊ณ โ์ง๋จ ๊ธฐ๋ก์ ํ์ธํ๊ณ ๋ต๋ณ์ ์ค๋นํ๊ณ ์์ด์.โ์ ๊ฐ์ด ๋ต๋ณ ์ค๋นํ๊ณ ์๋ค๋ ์๋ด ๋ฉ์์ง๋ฅผ ์ฌ์ฉ์์๊ฒ ๋จผ์ ์ ๋ฌํ๋๋ก ํ๋ค.
์ฌ์ฉ์๊ฐ ์นด์นด์คํก ์ฑ๋ด์ ์ง๋ฌธ ์
๋ ฅ
โ ์นด์นด์ค ์ฑ๋ด์ด ์คํฌ ์๋ฒ ํธ์ถ
โ ์คํฌ ์๋ฒ๊ฐ useCallback=true ์ ๋ต๋ณ ์ค๋น ์ค ์๋ด ๋ฉ์์ง ๋ฐํ
โ ๋ฐฑ๊ทธ๋ผ์ด๋์์ AI ๋ชจ๋ธ ๋ต๋ณ ์์ฑ
โ ๋ต๋ณ ์์ฑ ์๋ฃ ํ callbackUrl๋ก ์์ฑ๋ ๋ต๋ณ ์ ์กReference
- The Survey of Retrieval-Augmented Text Generation in Large Language Models
- ํ์ผ ๊ฒ์ | Gemini API | Google AI for Developers
- Introducing the File Search Tool in Gemini API
- Google Gemini File Search API: ๋ฒกํฐ DB ์์ด RAG ์์คํ ๊ตฌ์ถํ๋ ๋ฒ
- google.genai.errors.ServerError: 500 INTERNAL - Google AI Developers Forum
- Files API | Gemini API | Google AI for Developers
- Building a Serverless RAG Engine with Gemini File Search and Google Apps Script
- AI ์ฑ๋ด ์ฝ๋ฐฑ ๊ฐ๋ฐ ๊ฐ์ด๋ | kakao business ๋น์ฆ๋์ค ๊ฐ์ด๋