Подключаем Pinecone к GPT-4 для поиска по данным

Урок 271 из 299 курса «OpenAI Cookbook»: официальный курс OpenAI Academy (ОпенАИ) на русском языке. Урок входит в платный доступ; первые уроки курса бесплатно.

О чём урок

В этом notebook мы узнаем, как запрашивать релевантные контексты для наших запросов из Pinecone и передавать их модели GPT-4 для генерации ответа, основанного на реальных источниках данных. GPT-4 — это значительный шаг вперед по сравнению с предыдущими моделями завершения от OpenAI. Он также исключительно использует endpoint ChatCompletion, поэтому мы должны использовать его несколько иначе, чем обычно. Однако мощь модели делает это изменение оправданным, особенно при расширении с помощью внешней базы знаний, такой как векторная база данных Pinecone. Для этого notebook необходимы следующие установки: В этом примере мы загрузим документацию LangChain с langchain.readthedocs.io/. Мы получаем все файлы .html, расположенные на сайте, следующим образом: Это загружает весь HTML в директорию rtdocs. Теперь мы можем использовать сам LangChain для обработки этой документации. Мы делаем это с помощью ReadTheDocsLoader следующим образом: Таким образом, у нас есть сотни обработанных страниц документации. Давайте посмотрим на формат каждой из них: Мы получаем доступ к текстовому содержимому страницы следующим образом: Мы также можем найти источник каждого документа: Мы можем использовать это для создания нашего списка data: Выглядит довольно неаккуратно, но пока этого достаточно. Давайте посмотрим, как мы можем обработать все это. Мы разделим все на фрагменты (chunks) примерно по 400 токенов; это легко сделать с помощью langchain и tiktoken: Обработаем data, разделив ее на дополнительные chunks, используя этот подход. Наши chunks готовы, и теперь мы переходим к созданию embedding и индексированию всего. Мы используем text-embedding-3-small в качестве модели embedding. Мы можем создавать embedding текста следующим образом: В ответе res мы найдем JSON-подобный объект, содержащий наши новые embedding в поле 'data'. Внутри 'data' мы найдем две записи, по одной для каждого из двух предложений, которые мы только что преобразовали в embedding. Каждый векторный embedding содержит 1536 измерений (выходная размерность модели text-embedding-3-small).

План урока

  1. Исправление LLM, которые галлюцинируют
  2. Подготовка данных
  3. Инициализация модели embedding
  4. Инициализация индекса
  5. Извлечение
  6. Генерация с расширением извлечением

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Полезные гиды