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

Создание простой поисковой системы

В этом руководстве вы создадите поисковую систему, которая возвращает имена файлов, соответствующих запросу, используя search() метод для привязка Workers. Вы можете адаптировать его для использования REST API взамен.

Для достижения наилучших результатов с этим паттерном:

Предварительные требования

  1. Зарегистрируйтесь для получения Аккаунт Cloudflare ↗.
  2. Установка Node.js ↗.

менеджер версий Node.js

Используйте менеджер версий Node, например Volta ↗ или nvm ↗ чтобы избежать проблем с правами доступа и переключать версии Node.js. Wrangler, о котором пойдёт речь далее в этом руководстве, требует версию Node 16.17.0 или более поздней версии.

Вам также потребуется экземпляр AI Search, уже содержащий проиндексированный контент. Чтобы создать его и добавить контент, см. Начало работы.

1. Создайте проект Worker

Создайте новый проект Worker с помощью create-cloudflare CLI (C3). C3 ↗ это инструмент командной строки, который помогает настраивать и развёртывать новые приложения в Cloudflare.

Создайте новый проект с именем search-engine выполнив:

npm create cloudflare@latest -- search-engine

Для настройки выберите следующие параметры:

Перейдите в каталог вашего приложения:

cd search-engine

Добавьте следующее в свой конфигурационный файл Wrangler:

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "ai_search_namespaces": [
    {
      "binding": "AI_SEARCH",
      "namespace": "default",
      "remote": true
    }
  ]
}
[[ai_search_namespaces]]
binding = "AI_SEARCH"
namespace = "default"
remote = true

Это привязывает default пространство имён к env.AI_SEARCH. remote опция позволяет wrangler dev перенаправляют запросы к вашему развёрнутому экземпляру, поскольку AI Search не выполняется локально.

3. Добавьте код поиска

Обновите src/index.ts. Этот Worker считывает запрос из URL-адреса, выполняет поиск в вашем экземпляре и возвращает имя файла для каждого подходящего чанка. Замените my-instance с именем вашего экземпляра.

src/index.js
export default {
	async fetch(request, env) {
		const url = new URL(request.url);
		const userQuery = url.searchParams.get("query") ?? "What is Cloudflare?";

		const searchResult = await env.AI_SEARCH.get("my-instance").search({
			messages: [{ role: "user", content: userQuery }],
		});

		return Response.json({
			files: searchResult.chunks.map((chunk) => chunk.item.key),
		});
	},
};
src/index.ts
export interface Env {
	AI_SEARCH: AiSearchNamespace;
}

export default {
	async fetch(request, env): Promise<Response> {
		const url = new URL(request.url);
		const userQuery = url.searchParams.get("query") ?? "What is Cloudflare?";

		const searchResult = await env.AI_SEARCH.get("my-instance").search({
			messages: [{ role: "user", content: userQuery }],
		});

		return Response.json({
			files: searchResult.chunks.map((chunk) => chunk.item.key),
		});
	},
} satisfies ExportedHandler<Env>;

4. Запустите и разверните

Запустите локальный сервер разработки, а затем отправляйте запросы по адресу /?query=your+search+terms:

npx wrangler dev

Войдите в свой аккаунт Cloudflare, затем разверните Worker, чтобы сделать его доступным в интернете:

npx wrangler login
npx wrangler deploy

Следующие шаги

Привязка Workers для поиска

Полный справочник по поиску и общению из Worker.

Переписывание запроса

Управляйте тем, переписывает ли AI Search запрос перед поиском.