← Обзор / ai-search / configuration / data-source
R2
Вы можете подключить Cloudflare R2 bucket в качестве источника данных для вашего экземпляра AI Search. AI Search автоматически индексирует файлы, хранящиеся в вашем bucket.
Начало работы
Вы можете подключить бакет R2 при создании нового экземпляра через панель управления, REST API, или Wrangler. R2 представляет собой необязательный источник данных, который можно добавить наряду с встроенное хранилище.
Если вы никогда раньше не создавали экземпляр на основе R2, рекомендуем использовать dashboard или Wrangler CLI, которые создадут и зарегистрируют токен API службы для вас автоматически. Если вы используете REST API или привязку Workers, вам нужно будет создать токен API службы и передать token_id в запросе на создание. См. Токен API службы для инструкций по настройке.
Чтобы начать, настроить бакет R2 с вашими данными. Файлы неподдерживаемых форматов или превышающие лимит размера будут пропущены при индексации и зарегистрированы как ошибки.
Фильтрация путей
Вы можете контролировать, какие файлы индексируются, задав правила включения и исключения для путей объектов. Используйте это, чтобы ограничить индексирование определёнными папками или исключить файлы, которые не должны быть доступны для поиска.
Например, чтобы индексировать только документацию, исключив черновики:
- Включает:
/docs/** - Исключить:
/docs/drafts/**
См. Фильтрация путей о синтаксисе шаблонов, поведении фильтрации и других примерах.
Поддерживаемые типы файлов и ограничения по размеру см. в Источник данных.
Пользовательские метаданные
Вы можете прикреплять пользовательские метаданные к объектам R2 для фильтрации результатов поиска. AI Search считывает метаданные из S3-совместимых пользовательских заголовков (x-amz-meta-*).
Прежде чем можно будет извлекать метаданные, необходимо определить схему в конфигурации AI Search.
Настройка метаданных при загрузке
Используйте customMetadata опция при загрузке объектов с помощью Привязка R2 Workers:
await env.MY_BUCKET.put("docs/document.pdf", fileContent, {
customMetadata: {
category: "documentation",
version: "2.5",
is_public: "true",
},
});Используйте Metadata опция с AWS SDK for JavaScript:
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
const client = new S3Client({
region: "auto",
endpoint: `https://${accountId}.r2.cloudflarestorage.com`,
credentials: {
accessKeyId: R2_ACCESS_KEY_ID,
secretAccessKey: R2_SECRET_ACCESS_KEY,
},
});
await client.send(
new PutObjectCommand({
Bucket: "your-bucket",
Key: "docs/document.pdf",
Body: fileContent,
Metadata: {
category: "documentation",
version: "2.5",
is_public: "true",
},
}),
);Используйте --header флаг с Wrangler чтобы задать x-amz-meta-* заголовки:
wrangler r2 object put your-bucket/docs/document.pdf \
--file=./document.pdf \
--header="x-amz-meta-category:documentation" \
--header="x-amz-meta-version:2.5" \
--header="x-amz-meta-is_public:true"Как работает извлечение метаданных
Когда файл извлекается из R2 во время индексирования:
- Все
x-amz-meta-*заголовки считываются из объекта. -
x-amz-meta-префикс удаляется (например,x-amz-meta-categoryстановитсяcategory). - Имена полей сопоставляются с вашей схемой (без учёта регистра).
- Значения приводятся к настроенному типу данных.
- Недопустимые значения (например, нечисловая строка для
numberтипа) молча игнорируются.
Поддержка Unicode
Значения метаданных поддерживают символы Unicode благодаря кодировке MIME-Word (RFC 2047). Большинство S3-совместимых инструментов обрабатывают эту кодировку автоматически.