জেমিনি এপিআই ফাইল সার্চ টুলের মাধ্যমে রিট্রিভ্যাল অগমেন্টেড জেনারেশন ("RAG") সক্ষম করে। ব্যবহারকারীর প্রম্পটের উপর ভিত্তি করে প্রাসঙ্গিক তথ্য দ্রুত পুনরুদ্ধার করতে ফাইল সার্চ আপনার ডেটা আমদানি, খণ্ড এবং সূচী করে। এই তথ্যটি মডেলের প্রসঙ্গ হিসাবে সরবরাহ করা হয়, যা মডেলটিকে আরও সঠিক এবং প্রাসঙ্গিক উত্তর প্রদান করতে দেয়।
আপনি uploadToFileSearchStore API ব্যবহার করে আপনার ফাইল অনুসন্ধান স্টোরে সরাসরি একটি বিদ্যমান ফাইল আপলোড করতে পারেন, অথবা যদি আপনি একই সময়ে ফাইলটি তৈরি করতে চান তবে আলাদাভাবে আপলোড করে তারপর একটি ফাইল আমদানি করতে পারেন।
সরাসরি ফাইল অনুসন্ধান স্টোরে আপলোড করুন
এই উদাহরণগুলি দেখায় কিভাবে সরাসরি একটি ফাইল স্টোরে একটি ফাইল আপলোড করতে হয়:
পাইথন
from google import genai
from google.genai import types
import time
client = genai.Client()
# Create the file search store with an optional display name that shows in the grounding metadata
file_search_store = client.file_search_stores.create(config={'display_name': 'your-fileSearchStore-name'})
# Upload and import a file into the file search store, supply a unique file name which will be visible in citations
operation = client.file_search_stores.upload_to_file_search_store(
file='path/to/your/file.txt',
file_search_store_name='unique_file_name'
)
# Wait until import is complete
while not operation.done:
time.sleep(5)
operation = client.operations.get(operation)
# Ask a question about the file
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="""Can you tell me about Robert Graves""",
config=types.GenerateContentConfig(
tools=[
file_search=(
file_search_store_names=[file_search_store.name]
)
]
)
)
print(response.text)
ফাইল আমদানি করা হচ্ছে
বিকল্পভাবে, আপনি একটি বিদ্যমান ফাইল আপলোড করতে পারেন এবং এটি আপনার ফাইল স্টোরে আমদানি করতে পারেন:
পাইথন
from google import genai
from google.genai import types
import time
client = genai.Client()
# Upload the file using the Files API, supply a unique file name which will be visible in citations
sample_file = client.files.upload(file='sample.txt', config={'name': 'unique_file_name'})
# Create the file search store with an optional display name that shows in the grounding metadata
file_search_store = client.file_search_stores.create(config={'display_name': 'your-fileSearchStore-name'})
# Import the file into the file search store
operation = client.file_search_stores.import_file(
file_search_store_name=file_search_store.name,
file_name=sample_file.name
)
# Wait until import is complete
while not operation.done:
time.sleep(5)
operation = client.operations.get(operation)
# Ask a question about the file
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="""Can you tell me about Robert Graves""",
config=types.GenerateContentConfig(
tools=[
file_search=(
file_search_store_names=[file_search_store.name]
)
]
)
)
print(response.text)
চাঙ্কিং কনফিগারেশন
যখন আপনি একটি ফাইল অনুসন্ধান স্টোরে একটি ফাইল আমদানি করেন, তখন এটি স্বয়ংক্রিয়ভাবে খণ্ডে বিভক্ত হয়ে যায়, এমবেড করা হয়, সূচীবদ্ধ করা হয় এবং আপনার ফাইল অনুসন্ধান স্টোরে আপলোড করা হয়। যদি আপনার চাঙ্কিং কৌশলের উপর আরও নিয়ন্ত্রণের প্রয়োজন হয়, তাহলে আপনি প্রতি অংশে সর্বাধিক সংখ্যক টোকেন এবং সর্বাধিক সংখ্যক ওভারল্যাপিং টোকেন সেট করার জন্য একটি chunking_config সেটিং নির্দিষ্ট করতে পারেন।
# Upload and import and upload the file into the file search store with a custom chunking configuration
operation = client.file_search_stores.upload_to_file_search_store(
file_search_store_name=file_search_store.name,
file_name=sample_file.name,
config={
'chunking_config': {
'white_space_config': {
'max_tokens_per_chunk': 200,
'max_overlap_tokens': 20
}
}
}
)
আপনার ফাইল সার্চ স্টোর ব্যবহার করতে, এটিকে একটি টুল হিসেবে generateContent পদ্ধতিতে পাঠান, যেমনটি Upload এবং Import উদাহরণে দেখানো হয়েছে।
কিভাবে এটা কাজ করে
ফাইল অনুসন্ধান ব্যবহারকারীর প্রম্পটের সাথে প্রাসঙ্গিক তথ্য খুঁজে পেতে শব্দার্থিক অনুসন্ধান নামে একটি কৌশল ব্যবহার করে। ঐতিহ্যবাহী কীওয়ার্ড-ভিত্তিক অনুসন্ধানের বিপরীতে, শব্দার্থিক অনুসন্ধান আপনার প্রশ্নের অর্থ এবং প্রেক্ষাপট বোঝে।
যখন আপনি একটি ফাইল আমদানি করেন, তখন এটি এম্বেডিং নামক সংখ্যাসূচক উপস্থাপনায় রূপান্তরিত হয়, যা পাঠ্যের অর্থগত অর্থ ধারণ করে। এই এম্বেডিংগুলি একটি বিশেষ ফাইল অনুসন্ধান ডাটাবেসে সংরক্ষণ করা হয়। আপনি যখন একটি কোয়েরি করেন, তখন এটি একটি এম্বেডিংয়ে রূপান্তরিত হয়। তারপর সিস্টেমটি ফাইল অনুসন্ধান স্টোর থেকে সবচেয়ে অনুরূপ এবং প্রাসঙ্গিক নথির অংশগুলি খুঁজে পেতে একটি ফাইল অনুসন্ধান করে।
File Search uploadToFileSearchStore API ব্যবহারের প্রক্রিয়াটির একটি সংক্ষিপ্ত বিবরণ এখানে দেওয়া হল:
একটি ফাইল অনুসন্ধান স্টোর তৈরি করুন : একটি ফাইল অনুসন্ধান স্টোরে আপনার ফাইলগুলি থেকে প্রক্রিয়াজাত ডেটা থাকে। এটি এমন এম্বেডিংয়ের জন্য স্থায়ী ধারক যার উপর শব্দার্থিক অনুসন্ধান পরিচালিত হবে।
একটি ফাইল আপলোড করুন এবং একটি ফাইল অনুসন্ধান স্টোরে আমদানি করুন : একই সাথে একটি ফাইল আপলোড করুন এবং ফলাফলগুলি আপনার ফাইল অনুসন্ধান স্টোরে আমদানি করুন। এটি একটি অস্থায়ী
Fileঅবজেক্ট তৈরি করে, যা আপনার কাঁচা নথির একটি রেফারেন্স। সেই ডেটাটি তখন খণ্ডিত করা হয়, ফাইল অনুসন্ধান এম্বেডিংয়ে রূপান্তরিত হয় এবং সূচীবদ্ধ করা হয়।Fileঅবজেক্টটি 48 ঘন্টা পরে মুছে ফেলা হয়, যখন ফাইল অনুসন্ধান স্টোরে আমদানি করা ডেটা অনির্দিষ্টকালের জন্য সংরক্ষণ করা হবে যতক্ষণ না আপনি এটি মুছে ফেলার সিদ্ধান্ত নেন।ফাইল অনুসন্ধানের সাথে প্রশ্ন : অবশেষে, আপনি একটি
generateContentকলেFileSearchটুল ব্যবহার করেন। টুল কনফিগারেশনে, আপনি একটিFileSearchRetrievalResourceনির্দিষ্ট করেন, যা আপনি যেFileSearchStoreঅনুসন্ধান করতে চান তার দিকে নির্দেশ করে। এটি মডেলটিকে তার প্রতিক্রিয়া স্থির করার জন্য প্রাসঙ্গিক তথ্য খুঁজে পেতে সেই নির্দিষ্ট ফাইল অনুসন্ধান স্টোরে একটি শব্দার্থিক অনুসন্ধান করতে বলে।

এই চিত্রে, Documents থেকে Embedding মডেলে ( gemini-embedding-001 ব্যবহার করে) বিন্দুযুক্ত রেখাটি uploadToFileSearchStore API ( ফাইল স্টোরেজ বাইপাস করে) উপস্থাপন করে। অন্যথায়, Files API ব্যবহার করে আলাদাভাবে ফাইল তৈরি এবং আমদানি করলে ইনডেক্সিং প্রক্রিয়াটি Documents থেকে File স্টোরেজ এবং তারপর Embedding মডেলে স্থানান্তরিত হয়।
ফাইল অনুসন্ধানের দোকান
ফাইল সার্চ স্টোর হল আপনার ডকুমেন্ট এম্বেডিংয়ের জন্য একটি কন্টেইনার। ফাইল API এর মাধ্যমে আপলোড করা কাঁচা ফাইলগুলি 48 ঘন্টা পরে মুছে ফেলা হলেও, ফাইল সার্চ স্টোরে আমদানি করা ডেটা অনির্দিষ্টকালের জন্য সংরক্ষণ করা হয় যতক্ষণ না আপনি এটি ম্যানুয়ালি মুছে ফেলেন। আপনি আপনার ডকুমেন্টগুলি সংগঠিত করার জন্য একাধিক ফাইল সার্চ স্টোর তৈরি করতে পারেন। FileSearchStore API আপনাকে আপনার ফাইল সার্চ স্টোরগুলি পরিচালনা করার জন্য তৈরি, তালিকাভুক্ত, পেতে এবং মুছে ফেলতে দেয়। ফাইল সার্চ স্টোরের নামগুলি বিশ্বব্যাপী বিস্তৃত।
আপনার ফাইল অনুসন্ধান স্টোরগুলি কীভাবে পরিচালনা করবেন তার কিছু উদাহরণ এখানে দেওয়া হল:
# Create a file search store (including optional display_name for easier reference)
file_search_store = client.file_search_stores.create(config={'display_name': 'my-file_search-store-123'})
# List all your file search stores
for file_search_store in client.file_search_stores.list():
print(file_search_store)
# Get a specific file search store by name
my_file_search_store = client.file_search_stores.get(name='fileSearchStores/my-file_search-store-123')
# Delete a file search store
client.file_search_stores.delete(name='fileSearchStores/my-file_search-store-123', config={'force': True})
ফাইল মেটাডেটা
আপনার ফাইলগুলিকে ফিল্টার করতে বা অতিরিক্ত প্রসঙ্গ প্রদান করতে আপনি কাস্টম মেটাডেটা যোগ করতে পারেন। মেটাডেটা হল কী-মান জোড়ার একটি সেট।
# Import the file into the file search store with custom metadata
op = client.file_search_stores.import_file(
file_search_store_name=file_search_store.name,
file_name=sample_file.name,
custom_metadata=[
{"key": "author", "string_value": "Robert Graves"},
{"key": "year", "numeric_value": 1934}
]
)
যখন আপনার একটি ফাইল অনুসন্ধান স্টোরে একাধিক নথি থাকে এবং আপনি কেবল তাদের একটি উপসেট অনুসন্ধান করতে চান তখন এটি কার্যকর।
# Use the metadata filter to search within a subset of documents
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="""Tell me about the book 'I, Claudius'""",
config=types.GenerateContentConfig(
tools=[
types.Tool(
file_search=types.FileSearch(
file_search_store_names=[file_search_store.name],
metadata_filter = 'author=Robet Graves',
)
)
]
)
)
print(response.text)
metadata_filter এর জন্য তালিকা ফিল্টার সিনট্যাক্স বাস্তবায়নের নির্দেশিকা google.aip.dev/160 এ পাওয়া যাবে।
উদ্ধৃতি
যখন আপনি ফাইল অনুসন্ধান ব্যবহার করেন, তখন মডেলের প্রতিক্রিয়ায় উদ্ধৃতি অন্তর্ভুক্ত থাকতে পারে যা আপনার আপলোড করা নথির কোন অংশগুলি উত্তর তৈরি করতে ব্যবহার করা হয়েছিল তা নির্দিষ্ট করে। এটি তথ্য-পরীক্ষা এবং যাচাইকরণে সহায়তা করে।
আপনি প্রতিক্রিয়ার grounding_metadata বৈশিষ্ট্যের মাধ্যমে উদ্ধৃতি তথ্য অ্যাক্সেস করতে পারেন।
print(response.candidates[0].grounding_metadata)
সমর্থিত মডেল
নিম্নলিখিত মডেলগুলি ফাইল অনুসন্ধান সমর্থন করে:
সমর্থিত ফাইলের ধরণ
ফাইল অনুসন্ধান বিভিন্ন ধরণের ফাইল ফর্ম্যাট সমর্থন করে, যা নিম্নলিখিত বিভাগগুলিতে তালিকাভুক্ত করা হয়েছে।
অ্যাপ্লিকেশন ফাইলের ধরণ
-
application/dart -
application/ecmascript -
application/json -
application/ms-java -
application/msword -
application/pdf -
application/sql -
application/typescript -
application/vnd.curl -
application/vnd.dart -
application/vnd.ibm.secure-container -
application/vnd.jupyter -
application/vnd.ms-excel -
application/vnd.oasis.opendocument.text -
application/vnd.openxmlformats-officedocument.presentationml.presentation -
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet -
application/vnd.openxmlformats-officedocument.wordprocessingml.document -
application/vnd.openxmlformats-officedocument.wordprocessingml.template -
application/x-csh -
application/x-hwp -
application/x-hwp-v5 -
application/x-latex -
application/x-php -
application/x-powershell -
application/x-sh -
application/x-shellscript -
application/x-tex -
application/x-zsh -
application/xml -
application/zip
টেক্সট ফাইলের ধরণ
-
text/1d-interleaved-parityfec -
text/RED -
text/SGML -
text/cache-manifest -
text/calendar -
text/cql -
text/cql-extension -
text/cql-identifier -
text/css -
text/csv -
text/csv-schema -
text/dns -
text/encaprtp -
text/enriched -
text/example -
text/fhirpath -
text/flexfec -
text/fwdred -
text/gff3 -
text/grammar-ref-list -
text/hl7v2 -
text/html -
text/javascript -
text/jcr-cnd -
text/jsx -
text/markdown -
text/mizar -
text/n3 -
text/parameters -
text/parityfec -
text/php -
text/plain -
text/provenance-notation -
text/prs.fallenstein.rst -
text/prs.lines.tag -
text/prs.prop.logic -
text/raptorfec -
text/rfc822-headers -
text/rtf -
text/rtp-enc-aescm128 -
text/rtploopback -
text/rtx -
text/sgml -
text/shaclc -
text/shex -
text/spdx -
text/strings -
text/t140 -
text/tab-separated-values -
text/texmacs -
text/troff -
text/tsv -
text/tsx -
text/turtle -
text/ulpfec -
text/uri-list -
text/vcard -
text/vnd.DMClientScript -
text/vnd.IPTC.NITF -
text/vnd.IPTC.NewsML -
text/vnd.a -
text/vnd.abc -
text/vnd.ascii-art -
text/vnd.curl -
text/vnd.debian.copyright -
text/vnd.dvb.subtitle -
text/vnd.esmertec.theme-descriptor -
text/vnd.exchangeable -
text/vnd.familysearch.gedcom -
text/vnd.ficlab.flt -
text/vnd.fly -
text/vnd.fmi.flexstor -
text/vnd.gml -
text/vnd.graphviz -
text/vnd.hans -
text/vnd.hgl -
text/vnd.in3d.3dml -
text/vnd.in3d.spot -
text/vnd.latex-z -
text/vnd.motorola.reflex -
text/vnd.ms-mediapackage -
text/vnd.net2phone.commcenter.command -
text/vnd.radisys.msml-basic-layout -
text/vnd.senx.warpscript -
text/vnd.sosi -
text/vnd.sun.j2me.app-descriptor -
text/vnd.trolltech.linguist -
text/vnd.wap.si -
text/vnd.wap.sl -
text/vnd.wap.wml -
text/vnd.wap.wmlscript -
text/vtt -
text/wgsl -
text/x-asm -
text/x-bibtex -
text/x-boo -
text/xc -
text/x-c++hdr -
text/x-c++src -
text/x-cassandra -
text/x-chdr -
text/x-coffeescript -
text/x-component -
text/x-csh -
text/x-csharp -
text/x-csrc -
text/x-cuda -
text/xd -
text/x-diff -
text/x-dsrc -
text/x-emacs-lisp -
text/x-erlang -
text/x-gff3 -
text/x-go -
text/x-haskell -
text/x-java -
text/x-java-properties -
text/x-java-source -
text/x-kotlin -
text/x-lilypond -
text/x-lisp -
text/x-literate-haskell -
text/x-lua -
text/x-moc -
text/x-objcsrc -
text/x-pascal -
text/x-pcs-gcd -
text/x-perl -
text/x-perl-script -
text/x-python -
text/x-python-script -
text/xr-markdown -
text/x-rsrc -
text/x-rst -
text/x-ruby-script -
text/x-rust -
text/x-sass -
text/x-scala -
text/x-scheme -
text/x-script.python -
text/x-scss -
text/x-setext -
text/x-sfv -
text/x-sh -
text/x-siesta -
text/x-sos -
text/x-sql -
text/x-swift -
text/x-tcl -
text/x-tex -
text/x-vbasic -
text/x-vcalendar -
text/xml -
text/xml-dtd -
text/xml-external-parsed-entity -
text/yaml
হারের সীমা
পরিষেবার স্থিতিশীলতা জোরদার করার জন্য ফাইল অনুসন্ধান API-এর নিম্নলিখিত সীমা রয়েছে:
- সর্বোচ্চ ফাইলের আকার / প্রতি নথির সীমা : ১০০ এমবি
- প্রতি প্রকল্পে ফাইল অনুসন্ধানের সংখ্যা : ১০টি
- প্রকল্প ফাইল অনুসন্ধান স্টোরের মোট আকার (ব্যবহারকারী স্তরের উপর ভিত্তি করে):
- বিনামূল্যে : ১ জিবি
- স্তর ১ : ১০ জিবি
- স্তর ২ : ১০০ জিবি
- স্তর ৩ : ১ টিবি
- সুপারিশ : সর্বোত্তম পুনরুদ্ধার বিলম্ব নিশ্চিত করতে প্রতিটি ফাইল অনুসন্ধান স্টোরের আকার 20 গিগাবাইটের মধ্যে সীমাবদ্ধ করুন।
মূল্য নির্ধারণ
- বিদ্যমান এম্বেডিং মূল্যের উপর ভিত্তি করে ডেভেলপারদের থেকে ইনডেক্সিং সময়ে এম্বেডিংয়ের জন্য চার্জ নেওয়া হয় (প্রতি ১০ লক্ষ টোকেনে $০.১৫)।
- সংরক্ষণ বিনামূল্যে।
- কোয়েরি টাইম এম্বেডিং বিনামূল্যে।
- পুনরুদ্ধার করা ডকুমেন্ট টোকেনগুলি নিয়মিত প্রসঙ্গ টোকেন হিসাবে চার্জ করা হয়।