تتيح Gemini API ميزة "التوليد المعزّز بالاسترجاع" (RAG) من خلال أداة "البحث في الملفات". تستورد ميزة "البحث عن الملفات" بياناتك وتقسّمها وتفهرسها لتتيح استرجاع المعلومات ذات الصلة بسرعة استنادًا إلى طلب المستخدم. ثم يتم تقديم هذه المعلومات كسياق للنموذج، ما يتيح له تقديم إجابات أكثر دقة وملاءمةً.
يمكنك استخدام واجهة برمجة التطبيقات uploadToFileSearchStore لتحميل ملف حالي مباشرةً إلى متجر "بحث الملفات"، أو تحميله بشكل منفصل ثم importFile إذا أردت إنشاء الملف في الوقت نفسه.
التحميل مباشرةً إلى "متجر بحث الملفات"
يوضّح هذا المثال كيفية تحميل ملف مباشرةً إلى مخزن ملفات:
Python
from google import genai from google.genai import types import time client = genai.Client() # Create the File Search store with an optional display name 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 file name which will be visible in citations operation = client.file_search_stores.upload_to_file_search_store( file='sample.txt', file_search_store_name=file_search_store.name, config={ 'display_name' : 'display-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) JavaScript
const { GoogleGenAI } = require('@google/genai'); const ai = new GoogleGenAI({}); async function run() { // Create the File Search store with an optional display name const fileSearchStore = await ai.fileSearchStores.create({ config: { displayName: 'your-fileSearchStore-name' } }); // Upload and import a file into the File Search store, supply a file name which will be visible in citations let operation = await ai.fileSearchStores.uploadToFileSearchStore({ file: 'file.txt', fileSearchStoreName: fileSearchStore.name, config: { displayName: 'file-name', } }); // Wait until import is complete while (!operation.done) { await new Promise(resolve => setTimeout(resolve, 5000)); operation = await ai.operations.get({ operation }); } // Ask a question about the file const response = await ai.models.generateContent({ model: "gemini-2.5-flash", contents: "Can you tell me about Robert Graves", config: { tools: [ { fileSearch: { fileSearchStoreNames: [fileSearchStore.name] } } ] } }); console.log(response.text); } run(); REST
FILE_PATH="path/to/sample.pdf" MIME_TYPE=$(file -b --mime-type "${FILE_PATH}") NUM_BYTES=$(wc -c < "${FILE_PATH}") # Create a FileSearchStore STORE_RESPONSE=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/fileSearchStores?key=${GEMINI_API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "displayName": "My Store" }') # Extract the store name (format: fileSearchStores/xxxxxxx) STORE_NAME=$(echo $STORE_RESPONSE | jq -r '.name') # Initiate Resumable Upload to the Store TMP_HEADER="upload-header.tmp" curl -s -D "${TMP_HEADER}" \ "https://generativelanguage.googleapis.com/upload/v1beta/${STORE_NAME}:uploadToFileSearchStore?key=${GEMINI_API_KEY}" \ -H "X-Goog-Upload-Protocol: resumable" \ -H "X-Goog-Upload-Command: start" \ -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ -H "Content-Type: application/json" > /dev/null # Extract upload_url from headers UPLOAD_URL=$(grep -i "x-goog-upload-url: " "${TMP_HEADER}" | cut -d" " -f2 | tr -d "\r") rm "${TMP_HEADER}" # --- Upload the actual bytes --- curl "${UPLOAD_URL}" \ -H "Content-Length: ${NUM_BYTES}" \ -H "X-Goog-Upload-Offset: 0" \ -H "X-Goog-Upload-Command: upload, finalize" \ --data-binary "@${FILE_PATH}" 2> /dev/null # Generate content using the FileSearchStore curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \ -H "x-goog-api-key: $GEMINI_API_KEY" \ -H 'Content-Type: application/json' \ -X POST \ -d '{ "contents": [{ "parts":[{"text": "What does the research say about ..."}] }], "tools": [{ "file_search": { "file_search_store_names":["'$STORE_NAME'"] } }] }' 2> /dev/null > response.json cat response.json راجِع مرجع واجهة برمجة التطبيقات uploadToFileSearchStore للحصول على مزيد من المعلومات.
استيراد الملفات
بدلاً من ذلك، يمكنك تحميل ملف حالي واستيراده إلى مستودع الملفات باتّباع الخطوات التالية:
Python
from google import genai from google.genai import types import time client = genai.Client() # Upload the file using the Files API, supply a file name which will be visible in citations sample_file = client.files.upload(file='sample.txt', config={'name': 'display_file_name'}) # Create the File Search store with an optional display name 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) JavaScript
const { GoogleGenAI } = require('@google/genai'); const ai = new GoogleGenAI({}); async function run() { // Upload the file using the Files API, supply a file name which will be visible in citations const sampleFile = await ai.files.upload({ file: 'sample.txt', config: { name: 'file-name' } }); // Create the File Search store with an optional display name const fileSearchStore = await ai.fileSearchStores.create({ config: { displayName: 'your-fileSearchStore-name' } }); // Import the file into the File Search store let operation = await ai.fileSearchStores.importFile({ fileSearchStoreName: fileSearchStore.name, fileName: sampleFile.name }); // Wait until import is complete while (!operation.done) { await new Promise(resolve => setTimeout(resolve, 5000)); operation = await ai.operations.get({ operation: operation }); } // Ask a question about the file const response = await ai.models.generateContent({ model: "gemini-2.5-flash", contents: "Can you tell me about Robert Graves", config: { tools: [ { fileSearch: { fileSearchStoreNames: [fileSearchStore.name] } } ] } }); console.log(response.text); } run(); REST
FILE_PATH="path/to/sample.pdf" MIME_TYPE=$(file -b --mime-type "${FILE_PATH}") NUM_BYTES=$(wc -c < "${FILE_PATH}") # Create a FileSearchStore STORE_RESPONSE=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/fileSearchStores?key=${GEMINI_API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "displayName": "My Store" }') STORE_NAME=$(echo $STORE_RESPONSE | jq -r '.name') # Initiate Resumable Upload to the Store TMP_HEADER="upload-header.tmp" curl -s -X POST "https://generativelanguage.googleapis.com/upload/v1beta/files?key=${GEMINI_API_KEY}" \ -D "${TMP_HEADER}" \ -H "X-Goog-Upload-Protocol: resumable" \ -H "X-Goog-Upload-Command: start" \ -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ -H "Content-Type: application/json" 2> /dev/null UPLOAD_URL=$(grep -i "x-goog-upload-url: " "${TMP_HEADER}" | cut -d" " -f2 | tr -d "\r") rm "${TMP_HEADER}" # Upload the actual bytes. curl -s -X POST "${UPLOAD_URL}" \ -H "Content-Length: ${NUM_BYTES}" \ -H "X-Goog-Upload-Offset: 0" \ -H "X-Goog-Upload-Command: upload, finalize" \ --data-binary "@${FILE_PATH}" 2> /dev/null > file_info.json file_uri=$(jq ".file.name" file_info.json) # Import files into the file search store operation_name=$(curl "https://generativelanguage.googleapis.com/v1beta/${STORE_NAME}:importFile?key=${GEMINI_API_KEY}" \ -H "Content-Type: application/json" \ -X POST \ -d '{ "file_name":'$file_uri' }' | jq -r .name) # Wait for long running operation to complete while true; do # Get the full JSON status and store it in a variable. status_response=$(curl -s -H "x-goog-api-key: $GEMINI_API_KEY" "https://generativelanguage.googleapis.com/v1beta/${operation_name}") # Check the "done" field from the JSON stored in the variable. is_done=$(echo "${status_response}" | jq .done) if [ "${is_done}" = "true" ]; then break fi # Wait for 10 seconds before checking again. sleep 10 done # Generate content using the FileSearchStore curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${GEMINI_API_KEY}" \ -H 'Content-Type: application/json' \ -X POST \ -d '{ "contents": [{ "parts":[{"text": "What does the research say about ..."}] }], "tools": [{ "file_search": { "file_search_store_names":["'$STORE_NAME'"] } }] }' 2> /dev/null > response.json cat response.json راجِع مرجع واجهة برمجة التطبيقات importFile للحصول على مزيد من المعلومات.
إعدادات تقسيم المحتوى
عند استيراد ملف إلى مستودع "البحث عن الملفات"، يتم تقسيمه تلقائيًا إلى أجزاء، وتضمينه، وفهرسته، وتحميله إلى مستودع "البحث عن الملفات". إذا كنت بحاجة إلى مزيد من التحكّم في استراتيجية التقسيم، يمكنك تحديد إعداد chunking_config لضبط الحد الأقصى لعدد الرموز المميزة لكل جزء والحد الأقصى لعدد الرموز المميزة المتداخلة.
Python
# 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 } } } ) JavaScript
// Upload and import and upload the file into the File Search store with a custom chunking configuration let operation = await ai.fileSearchStores.uploadToFileSearchStore({ file: 'file.txt', fileSearchStoreName: fileSearchStore.name, config: { displayName: 'file-name', chunkingConfig: { whiteSpaceConfig: { maxTokensPerChunk: 200, maxOverlapTokens: 20 } } } }); REST
FILE_PATH="path/to/sample.pdf" MIME_TYPE=$(file -b --mime-type "${FILE_PATH}") NUM_BYTES=$(wc -c < "${FILE_PATH}") # Create a FileSearchStore STORE_RESPONSE=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/fileSearchStores?key=${GEMINI_API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "displayName": "My Store" }') # Extract the store name (format: fileSearchStores/xxxxxxx) STORE_NAME=$(echo $STORE_RESPONSE | jq -r '.name') # Initiate Resumable Upload to the Store TMP_HEADER="upload-header.tmp" curl -s -D "${TMP_HEADER}" \ "https://generativelanguage.googleapis.com/upload/v1beta/${STORE_NAME}:uploadToFileSearchStore?key=${GEMINI_API_KEY}" \ -H "X-Goog-Upload-Protocol: resumable" \ -H "X-Goog-Upload-Command: start" \ -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ -H "Content-Type: application/json" > /dev/null -d '{ "chunking_config": { "white_space_config": { "max_tokens_per_chunk": 200, "max_overlap_tokens": 20 } } }' # Extract upload_url from headers UPLOAD_URL=$(grep -i "x-goog-upload-url: " "${TMP_HEADER}" | cut -d" " -f2 | tr -d "\r") rm "${TMP_HEADER}" # --- Upload the actual bytes --- curl "${UPLOAD_URL}" \ -H "Content-Length: ${NUM_BYTES}" \ -H "X-Goog-Upload-Offset: 0" \ -H "X-Goog-Upload-Command: upload, finalize" \ --data-binary "@${FILE_PATH}" 2> /dev/null لاستخدام متجر "بحث الملفات"، مرِّره كأداة إلى طريقة generateContent، كما هو موضّح في المثالَين تحميل واستيراد.
آلية العمل
تستخدم ميزة "البحث عن الملفات" أسلوبًا يُعرف باسم البحث الدلالي للعثور على معلومات ذات صلة بطلب المستخدم. على عكس البحث التقليدي المستند إلى الكلمات الرئيسية، يفهم البحث الدلالي المعنى والسياق الخاصين بطلب البحث الذي تجريه.
عند استيراد ملف، يتم تحويله إلى تمثيلات رقمية تُعرف باسم التضمينات، وهي تلتقط المعنى الدلالي للنص. يتم تخزين هذه التضمينات في قاعدة بيانات متخصصة في "البحث عن الملفات". عند إجراء طلب بحث، يتم تحويله أيضًا إلى تضمين. بعد ذلك، يجري النظام عملية "البحث في الملفات" للعثور على أجزاء المستندات الأكثر تشابهًا وملاءمةً من مستودع "البحث في الملفات".
في ما يلي تفصيل لعملية استخدام واجهة برمجة التطبيقات File Search uploadToFileSearchStore:
إنشاء مستودع "بحث في الملفات": يحتوي مستودع "بحث في الملفات" على البيانات المعالَجة من ملفاتك. وهي الحاوية الدائمة لعمليات التضمين التي سيتم إجراء البحث الدلالي عليها.
تحميل ملف واستيراده إلى مستودع "البحث عن الملفات": يمكنك تحميل ملف واستيراد النتائج إلى مستودع "البحث عن الملفات" في الوقت نفسه. يؤدي ذلك إلى إنشاء كائن
Fileمؤقت، وهو مرجع إلى مستندك الأولي. بعد ذلك، يتم تقسيم هذه البيانات إلى أجزاء وتحويلها إلى تضمينات "بحث الملفات" وفهرستها. يتم حذف عنصرFileبعد 48 ساعة، بينما يتم تخزين البيانات التي تم استيرادها إلى مساحة تخزين "البحث عن الملفات" إلى أجل غير مسمى إلى أن تختار حذفها.طلب البحث باستخدام "البحث عن الملفات": أخيرًا، يمكنك استخدام أداة
FileSearchفي مكالمةgenerateContent. في إعدادات الأداة، عليك تحديدFileSearchRetrievalResource، يشير إلىFileSearchStoreالذي تريد البحث فيه. يطلب ذلك من النموذج إجراء بحث دلالي في مخزن "بحث الملفات" المحدّد للعثور على معلومات ذات صلة يستند إليها في رده.
في هذا الرسم التخطيطي، يمثّل الخط المتقطّع من المستندات إلى نموذج التضمين (باستخدام gemini-embedding-001) واجهة برمجة التطبيقات uploadToFileSearchStore (مع تجاوز تخزين الملفات). في ما عدا ذلك، يؤدي استخدام Files API لإنشاء الملفات بشكل منفصل ثم استيرادها إلى نقل عملية الفهرسة من المستندات إلى مساحة تخزين الملفات ثم إلى نموذج التضمين.
متاجر "بحث الملفات"
مخزن "البحث عن الملفات" هو حاوية لتضمينات المستندات. في حين يتم حذف الملفات الأولية التي تم تحميلها من خلال File API بعد 48 ساعة، يتم تخزين البيانات التي تم استيرادها إلى مستودع "بحث الملفات" إلى أجل غير مسمى إلى أن تحذفها يدويًا. يمكنك إنشاء عدة مستودعات بحث في الملفات لتنظيم مستنداتك. تتيح لك واجهة برمجة التطبيقات FileSearchStore إنشاء قوائم بملفاتك وحذفها والبحث عنها وإدارتها. تكون أسماء متاجر "بحث الملفات" محدّدة النطاق على مستوى العالم.
في ما يلي بعض الأمثلة على كيفية إدارة متاجر "بحث الملفات":
Python
# 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}) JavaScript
// Create a File Search store (including optional display_name for easier reference) const fileSearchStore = await ai.fileSearchStores.create({ config: { displayName: 'my-file_search-store-123' } }); // List all your File Search stores const fileSearchStores = await ai.fileSearchStores.list(); for await (const store of fileSearchStores) { console.log(store); } // Get a specific File Search store by name const myFileSearchStore = await ai.fileSearchStores.get({ name: 'fileSearchStores/my-file_search-store-123' }); // Delete a File Search store await ai.fileSearchStores.delete({ name: 'fileSearchStores/my-file_search-store-123', config: { force: true } }); REST
# Create a File Search store (including optional display_name for easier reference) curl -X POST "https://generativelanguage.googleapis.com/v1beta/fileSearchStores?key=${GEMINI_API_KEY}" \ -H "Content-Type: application/json" -d '{ "displayName": "My Store" }' # List all your File Search stores curl "https://generativelanguage.googleapis.com/v1beta/fileSearchStores?key=${GEMINI_API_KEY}" \ # Get a specific File Search store by name curl "https://generativelanguage.googleapis.com/v1beta/fileSearchStores/my-file_search-store-123?key=${GEMINI_API_KEY}" # Delete a File Search store curl -X DELETE "https://generativelanguage.googleapis.com/v1beta/fileSearchStores/my-file_search-store-123?key=${GEMINI_API_KEY}" مرجع File Search Documents API للطُرق والحقول ذات الصلة بإدارة المستندات في مخازن الملفات
البيانات الوصفية للملف
يمكنك إضافة بيانات وصفية مخصّصة إلى ملفاتك للمساعدة في فلترتها أو تقديم سياق إضافي. بيانات التعريف هي مجموعة من أزواج المفتاح/القيمة.
Python
# 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} ] ) JavaScript
// Import the file into the File Search store with custom metadata let operation = await ai.fileSearchStores.importFile({ fileSearchStoreName: fileSearchStore.name, fileName: sampleFile.name, config: { customMetadata: [ { key: "author", stringValue: "Robert Graves" }, { key: "year", numericValue: 1934 } ] } }); REST
FILE_PATH="path/to/sample.pdf" MIME_TYPE=$(file -b --mime-type "${FILE_PATH}") NUM_BYTES=$(wc -c < "${FILE_PATH}") # Create a FileSearchStore STORE_RESPONSE=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/fileSearchStores?key=${GEMINI_API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "displayName": "My Store" }') # Extract the store name (format: fileSearchStores/xxxxxxx) STORE_NAME=$(echo $STORE_RESPONSE | jq -r '.name') # Initiate Resumable Upload to the Store TMP_HEADER="upload-header.tmp" curl -s -D "${TMP_HEADER}" \ "https://generativelanguage.googleapis.com/upload/v1beta/${STORE_NAME}:uploadToFileSearchStore?key=${GEMINI_API_KEY}" \ -H "X-Goog-Upload-Protocol: resumable" \ -H "X-Goog-Upload-Command: start" \ -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ -H "Content-Type: application/json" \ -d '{ "custom_metadata": [ {"key": "author", "string_value": "Robert Graves"}, {"key": "year", "numeric_value": 1934} ] }' > /dev/null # Extract upload_url from headers UPLOAD_URL=$(grep -i "x-goog-upload-url: " "${TMP_HEADER}" | cut -d" " -f2 | tr -d "\r") rm "${TMP_HEADER}" # --- Upload the actual bytes --- curl "${UPLOAD_URL}" \ -H "Content-Length: ${NUM_BYTES}" \ -H "X-Goog-Upload-Offset: 0" \ -H "X-Goog-Upload-Command: upload, finalize" \ --data-binary "@${FILE_PATH}" 2> /dev/null يكون ذلك مفيدًا عندما يكون لديك مستندات متعددة في متجر "بحث الملفات" وتريد البحث في مجموعة فرعية منها فقط.
Python
# 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=Robert Graves", ) ) ] ) ) print(response.text) JavaScript
// Use the metadata filter to search within a subset of documents const response = await ai.models.generateContent({ model: "gemini-2.5-flash", contents: "Tell me about the book 'I, Claudius'", config: { tools: [ { fileSearch: { fileSearchStoreNames: [fileSearchStore.name], metadataFilter: 'author="Robert Graves"', } } ] } }); console.log(response.text); REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${GEMINI_API_KEY}" \ -H 'Content-Type: application/json' \ -X POST \ -d '{ "contents": [{ "parts":[{"text": "Tell me about the book I, Claudius"}] }], "tools": [{ "file_search": { "file_search_store_names":["'$STORE_NAME'"], "metadata_filter": "author = \"Robert Graves\"" } }] }' 2> /dev/null > response.json cat response.json يمكنك الاطّلاع على إرشادات حول تنفيذ بنية فلتر القائمة metadata_filter على google.aip.dev/160.
الاقتباسات
عند استخدام "البحث في الملفات"، قد يتضمّن ردّ النموذج اقتباسات تحدّد الأجزاء من المستندات التي حمّلتها والتي تم استخدامها لإنشاء الإجابة. يساعد ذلك في التحقّق من صحة المعلومات.
يمكنك الوصول إلى معلومات الاقتباس من خلال السمة grounding_metadata في الرد.
Python
print(response.candidates[0].grounding_metadata) JavaScript
console.log(JSON.stringify(response.candidates?.[0]?.groundingMetadata, null, 2)); النماذج المتوافقة
تتيح الطُرز التالية استخدام ميزة "البحث عن الملفات":
أنواع الملفات المعتمدة
يتيح "بحث الملفات" مجموعة كبيرة من تنسيقات الملفات، وهي مدرَجة في الأقسام التالية.
أنواع ملفات التطبيقات
application/dartapplication/ecmascriptapplication/jsonapplication/ms-javaapplication/mswordapplication/pdfapplication/sqlapplication/typescriptapplication/vnd.curlapplication/vnd.dartapplication/vnd.ibm.secure-containerapplication/vnd.jupyterapplication/vnd.ms-excelapplication/vnd.oasis.opendocument.textapplication/vnd.openxmlformats-officedocument.presentationml.presentationapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentapplication/vnd.openxmlformats-officedocument.wordprocessingml.templateapplication/x-cshapplication/x-hwpapplication/x-hwp-v5application/x-latexapplication/x-phpapplication/x-powershellapplication/x-shapplication/x-shellscriptapplication/x-texapplication/x-zshapplication/xmlapplication/zip
أنواع الملفات النصية
text/1d-interleaved-parityfectext/REDtext/SGMLtext/cache-manifesttext/calendartext/cqltext/cql-extensiontext/cql-identifiertext/csstext/csvtext/csv-schematext/dnstext/encaprtptext/enrichedtext/exampletext/fhirpathtext/flexfectext/fwdredtext/gff3text/grammar-ref-listtext/hl7v2text/htmltext/javascripttext/jcr-cndtext/jsxtext/markdowntext/mizartext/n3text/parameterstext/parityfectext/phptext/plaintext/provenance-notationtext/prs.fallenstein.rsttext/prs.lines.tagtext/prs.prop.logictext/raptorfectext/rfc822-headerstext/rtftext/rtp-enc-aescm128text/rtploopbacktext/rtxtext/sgmltext/shaclctext/shextext/spdxtext/stringstext/t140text/tab-separated-valuestext/texmacstext/trofftext/tsvtext/tsxtext/turtletext/ulpfectext/uri-listtext/vcardtext/vnd.DMClientScripttext/vnd.IPTC.NITFtext/vnd.IPTC.NewsMLtext/vnd.atext/vnd.abctext/vnd.ascii-arttext/vnd.curltext/vnd.debian.copyrighttext/vnd.dvb.subtitletext/vnd.esmertec.theme-descriptortext/vnd.exchangeabletext/vnd.familysearch.gedcomtext/vnd.ficlab.flttext/vnd.flytext/vnd.fmi.flexstortext/vnd.gmltext/vnd.graphviztext/vnd.hanstext/vnd.hgltext/vnd.in3d.3dmltext/vnd.in3d.spottext/vnd.latex-ztext/vnd.motorola.reflextext/vnd.ms-mediapackagetext/vnd.net2phone.commcenter.commandtext/vnd.radisys.msml-basic-layouttext/vnd.senx.warpscripttext/vnd.sositext/vnd.sun.j2me.app-descriptortext/vnd.trolltech.linguisttext/vnd.wap.sitext/vnd.wap.sltext/vnd.wap.wmltext/vnd.wap.wmlscripttext/vtttext/wgsltext/x-asmtext/x-bibtextext/x-bootext/x-ctext/x-c++hdrtext/x-c++srctext/x-cassandratext/x-chdrtext/x-coffeescripttext/x-componenttext/x-cshtext/x-csharptext/x-csrctext/x-cudatext/x-dtext/x-difftext/x-dsrctext/x-emacs-lisptext/x-erlangtext/x-gff3text/x-gotext/x-haskelltext/x-javatext/x-java-propertiestext/x-java-sourcetext/x-kotlintext/x-lilypondtext/x-lisptext/x-literate-haskelltext/x-luatext/x-moctext/x-objcsrctext/x-pascaltext/x-pcs-gcdtext/x-perltext/x-perl-scripttext/x-pythontext/x-python-scripttext/x-r-markdowntext/x-rsrctext/x-rsttext/x-ruby-scripttext/x-rusttext/x-sasstext/x-scalatext/x-schemetext/x-script.pythontext/x-scsstext/x-setexttext/x-sfvtext/x-shtext/x-siestatext/x-sostext/x-sqltext/x-swifttext/x-tcltext/x-textext/x-vbasictext/x-vcalendartext/xmltext/xml-dtdtext/xml-external-parsed-entitytext/yaml
حدود معدّل الاستخدام
تفرض واجهة File Search API الحدود التالية لضمان استقرار الخدمة:
- الحد الأقصى لحجم الملف / الحد الأقصى لكل مستند: 100 ميغابايت
- إجمالي حجم مساحات تخزين "البحث عن الملفات" في المشروع (استنادًا إلى فئة المستخدم):
- مجانًا: 1 غيغابايت
- المستوى 1: 10 غيغابايت
- المستوى 2: 100 غيغابايت
- المستوى 3: 1 تيرابايت
- اقتراح: يجب ألا يتجاوز حجم كل مستودع بيانات في "بحث الملفات" 20 غيغابايت لضمان أفضل أوقات استجابة ممكنة.
الأسعار
- يتم تحصيل رسوم من المطوّرين مقابل عمليات التضمين في وقت الفهرسة استنادًا إلى أسعار التضمين الحالية (0.15 دولار أمريكي لكل مليون رمز مميز).
- تتوفر خدمة تخزين الأمتعة مجانًا.
- إنّ تضمينات وقت طلب البحث مجانية.
- يتم تحصيل رسوم من الرموز المميزة للمستندات التي تم استردادها باعتبارها رموزًا مميزة للسياق عادية.
الخطوات التالية
- انتقِل إلى مرجع واجهة برمجة التطبيقات File Search Stores وDocuments في File Search.