INTEGRITY Документация

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 с вашими данными. Файлы неподдерживаемых форматов или превышающие лимит размера будут пропущены при индексации и зарегистрированы как ошибки.

Фильтрация путей

Вы можете контролировать, какие файлы индексируются, задав правила включения и исключения для путей объектов. Используйте это, чтобы ограничить индексирование определёнными папками или исключить файлы, которые не должны быть доступны для поиска.

Например, чтобы индексировать только документацию, исключив черновики:

См. Фильтрация путей о синтаксисе шаблонов, поведении фильтрации и других примерах.

Поддерживаемые типы файлов и ограничения по размеру см. в Источник данных.

Пользовательские метаданные

Вы можете прикреплять пользовательские метаданные к объектам 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 во время индексирования:

  1. Все x-amz-meta-* заголовки считываются из объекта.
  2. x-amz-meta- префикс удаляется (например, x-amz-meta-category становится category).
  3. Имена полей сопоставляются с вашей схемой (без учёта регистра).
  4. Значения приводятся к настроенному типу данных.
  5. Недопустимые значения (например, нечисловая строка для number типа) молча игнорируются.

Поддержка Unicode

Значения метаданных поддерживают символы Unicode благодаря кодировке MIME-Word (RFC 2047). Большинство S3-совместимых инструментов обрабатывают эту кодировку автоматически.