Михаил Омельченко | AI&IT
5.3K subscribers
975 photos
190 videos
4 files
710 links
ИИ в работе, разработка, веб. Агенты, автоматизация, инструменты. Веду я, Михаил Омельченко, внешний технический директор по ИИ и ментор.

Менторство, реклама и сотрудничество: djwoms.ru
Telegram - @DJWOMS
YouTube - https://www.youtube.com/c/DjangoSchool
Download Telegram
Чтобы удобнее было воспользоваться кодом команды для обсуждения идей.

Ссылка на GitHub

#crewai
🔥7
Многие пробуют нейросети для работы с текстами или чтобы упростить рутинные задачи. Но результат часто разочаровывает.

С какими трудностями чаще всего сталкиваются:
✖️ модель пишет красиво, но не по делу
✖️ приходится десятки раз переформулировать запрос, а ответ всё равно не подходит
✖️ одно и то же задание даёт разные результаты — непредсказуемость мешает использовать нейросеть в работе
✖️ непонятно, как объяснить задачу модели так, чтобы она сделала именно то, что нужно
✖️ вместо экономии времени получается потеря времени

На самом деле проблема не в самой модели. Нейросеть работает ровно настолько хорошо, насколько точно сформулирован запрос.

Правильно составленный промпт превращает нейросеть в инструмент:
— для написания текстов под конкретные задачи
— для упрощения и автоматизации рутины
— для получения понятных и применимых ответов без “воды”

Я помогаю:
✅ разобрать ваши задачи и составить правильные промпты

✅ объясняю, как работать с LLM так, чтобы они давали предсказуемый результат

✅ обучаю простым приёмам, которые позволяют использовать нейросеть как помощника

Если хотите научиться получать результат, а не случайные ответы, 👉 пишите мне и записывайтесь на консультацию.


👉 @DJWOMS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
Few-Shot Learning в промптах

Few-shot learning — это подход, при котором модель решает задачу, опираясь на несколько примеров (обычно 2–5). В контексте промптов это значит: вы показываете ИИ пары «запрос — ответ», и он учится воспроизводить логику и формат.

Зачем это нужно?
▫️Не нужно дообучать модель
▫️Работает с малым количеством данных
▫️Быстро, дёшево, эффективно
▫️Идеально для медицины, финансов, поддержки и других ниш с редкими данными


Как это работает и структура
Пример 1 (запрос + ответ)  
Пример 2 (запрос + ответ)
...
---
Новый запрос
Ответ:

Модель анализирует паттерны и применяет их к новому вводу.

Пример:
Отзыв: Еда была вкусной, обслуживание — на высшем уровне!  
Эмоция: позитив

Отзыв: Ждал заказ 40 минут, а роллы были тёплыми.
Эмоция: негатив
---
Отзыв: Персонал грубый, музыка слишком громкая.
Эмоция:

Ожидаемый ответ: негатив — модель уловила ключевые признаки.

Где использовать?
✔️ Классификация (настроение, категории)
✔️ Переформулирование текста (разговорный → деловой стиль)
✔️ Извлечение данных (имена, даты, места) и т.д.

Советы:
- Давайте 2–5 релевантных и разнообразных примеров
- Используйте разделитель ---
- Сохраняйте одинаковый формат ответов
- Указывайте, какой нужен вывод: слово, JSON, список и т.д.
- Тестируйте и итерируйте


#ai #chatgpt
🔥6👍1
Рутина в бизнесе, которую можно отдать агентам

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

Часто этим занимаются сотрудники вручную — хотя задачи однотипные и вполне можно поручить их агенту.


Примеры, где агенты уже применяются:
▫️ Поддержка клиентов — агент отвечает на типовые запросы, сортирует тикеты и подготавливает черновики ответов.
▫️ Отчёты и аналитика — сбор данных из разных систем и формирование структурированного отчёта с выводами.
▫️ Документы — извлечение данных из накладных, заполнение шаблонов, проверка корректности.
▫️ Маркетинг — генерация и адаптация текстов для рассылок и соцсетей, подбор заголовков и идей.
▫️ Внутренние процессы — напоминания, планирование задач, контроль сроков.

Разница в том, что агент работает не по жёсткому скрипту, а понимает контекст, может принимать решения и взаимодействовать с другими сервисами.

Для таких задач я использую CrewAI. Это инструмент, который позволяет собирать команду агентов, распределять роли и автоматизировать целые цепочки действий.


Что даёт консультация:
✅ разбор ваших процессов и поиск точек, где выгодно подключить агентов;
✅ рекомендации, как встроить CrewAI в работу;
✅ объяснение, как контролировать агентов и получать стабильный результат.

Если хотите понять, какие задачи в вашем бизнесе можно автоматизировать уже сейчас — 👉 пишите мне и записывайтесь на консультацию.


👉 @DJWOMS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍76
Function Calling в AI: Как LLM взаимодействуют с внешними инструментами

Function calling — это способ, с помощью которого LLM может запрашивать данные у внешних систем, например, погоду, акции или базы данных.

Допустим, вы спрашиваете: "Какая погода в Москве?" — LLM не знает ответа без доступа к API сервиса погоды, но с помощью function calling она может получить точную информацию.

Как это работает?
1. AI формирует запрос "погода в Москве" и преобразует его в структурированный формат JSON.
2. Запрос отправляется на сервер, который выполняет действие, получает данные с сайта прогноза погоды.
3. Полученные данные возвращаются к AI, который формирует окончательный ответ: "Сегодня в Москве +15°C".

Пример
response = openai.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Погода в Москве?"}],
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {"city": "Москва"}
}
}]
)

# Обрабатываем вызов
if tool_call := response.choices[0].message.tool_calls:
weather = requests.get(f"https://api.weather.com/{tool_call.function.arguments['city']}").json()

# Возвращаем данные в чат
final = openai.chat.completions.create(
model="gpt-4",
messages=[
{"role": "user", "content": "Погода в Москве?"},
response.choices[0].message,
{"role": "tool", "content": str(weather), "tool_call_id": tool_call.id}
]
)
print(final.choices[0].message.content)

OpenAI ожидает role: "tool".

Function calling — это стратегический инструмент, позволяющий AI преодолеть ограничения внутренних знаний и взаимодействовать с реальным миром. Он делает модели более универсальными, способными решать задачи, требующие доступа к данным, расчетам или внешним системам.

#ai
👍6
Агенты под задачи бизнеса

В отличие от простых ботов или макросов, агент:
▫️ понимает задачу в контексте;
▫️ может выполнять цепочку действий, а не только один шаг;
▫️ обращается к API, CRM, документам и сервисам;
▫️ адаптируется под изменения в процессе.

Примеры применения
Агент для заявок — принимает обращения, распределяет по приоритетам и подготавливает ответы.

Агент для отчётов — собирает данные из разных систем и формирует сводку в нужном формате.

Агент для маркетинга — генерирует тексты для рассылок, постов и помогает планировать публикации.

Я занимаюсь разработкой таких агентов на CrewAI.

Что входит в услугу:
✅ анализ бизнес-процесса и подбор подходящей архитектуры;

✅ проектирование и разработка агента или команды агентов;

✅ интеграция с вашими сервисами и настройка логики работы;

✅ обучение вашей команды, как пользоваться и контролировать результат.

Это не “универсальный бот”, а решение под конкретные задачи вашего бизнеса.

Если хотите разобраться, какой агент может реально экономить деньги и время вашей компании 👉 пишите мне.

Запишитесь на консультацию — вместе разберём, нужны ли вам агенты или процессы можно улучшить другими способами с помощью нейросетей.

👉 @DJWOMS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
In-Context Learning — обучение LLM в контексте

Одна из самых сильных сторон больших языковых моделей — способность учиться на лету, без дообучения или изменения параметров. Это и есть In-Context Learning (ICL).

Когда вы вводите промпт с инструкцией или примерами, модель не "знает" их заранее. Она буквально строит логику ответа внутри текущего контекста. Контекст становится временной "памятью" и пространством для рассуждений.

Почему это важно?
▪️ ICL позволяет использовать одну и ту же модель для десятков задач без отдельного обучения.
▪️ Качество ответа напрямую зависит от того, как мы формулируем подсказку: порядок информации, стиль и даже примеры в промпте способны радикально менять результат.
▪️ Это фундамент для техник вроде few-shot prompting и chain-of-thought.

Чем ICL отличается от few-shot?
Few-shot prompting — это частный случай In-Context Learning. Мы даём модели несколько примеров "вопрос–ответ", чтобы она уловила шаблон.
Но ICL шире: модель может адаптироваться даже без примеров (zero-shot) или с одним примером (one-shot) — достаточно правильно задать инструкцию.

Пример one-shot In-Context Learning
Задача: Определи тональность отзыва (Позитивный, Нейтральный или Негативный).

Пример:
Отзыв: "Очень понравился сервис, всё быстро и удобно."
Ответ: Позитивный

---
Отзыв: "Поддержка ответила быстро, помогли решить проблему."
Ответ:


#ai #icl
👍73
❔ Как работать с длинными промптами в LLM

Длинные промпты позволяют учитывать больше данных, но без структуры они снижают точность ответов. Основная задача — удерживать баланс между объёмом и структурой.

Основные подходы:
▫️ Определите цель и четко сформулируйте, что нужно получить от модели. Например: "Извлеки ключевые идеи из документа и сформулируйте их в виде списка".
▫️ Текст разбивайте на логические части: списки, блоки, подзаголовки.
▫️ Удалите лишнюю информацию, оставьте только ключевые данные.
▫️ Разбивайте задачи на шаги.
▫️ Указывайте формат ответа (список, JSON и т.п.).
▫️ Учитывайте ограничения модели, проверяйте поддерживаемое количество токенов

В новых моделях расширено контекстное окно (до 100K токенов, Claude 1M токенов) и поддерживается интеграция с RAG для доступа к внешним данным. Качество зависит от структуры, а не от объёма.

Длинные промпты требуют строгой организации информации. Чёткая структура и форматирование, повышают точность и снижают риск потери данных.


👉 Мой клуб по нейросетям

#ai
Please open Telegram to view this post
VIEW IN TELEGRAM
17
Chain-of-Thought логика через пошаговые объяснения

Chain-of-Thought (CoT) — это метод, позволяющий LLM формировать и объяснять логику решения задач. В отличие от стандартных ответов, модель выводит пошаговое рассуждение, что повышает точность и прозрачность. Например, при решении уравнения или анализа текста LLM объясняет каждый этап.

В чем польза
1. Понятнее человеку, видно ход решения.
2. Меньше ошибок, каждый шаг можно проверить.
3. Понятно, как получен вывод.
4. Обучающий эффект, рассуждения можно повторно использовать.

Области применения
- Математика
- Генерация кода
- Анализ текста
- Решение задач по логике и головоломок
- Планирование и стратегия
- Принятие решений, оценка "за" и "против" с рассуждениями
- Анализ данных и таблиц
- Научные объяснения, анализа исследования
- Обучение и экзаменационные задачи
- Юридический анализ, логика применения закона или правил к конкретному кейсу

Применение
🔹 Используйте промпты с подсказками
- Например: "Объясни каждый шаг решения" и модель покажет логику
🔹 Попросите модель уточнить объяснения или привести примеры
🔹 Комбинируйте CoT с Role Prompting или Few-Shot Learning

Вариант без CoT
Ответь одним числом.

Клиент купил 3 товара по 1200.
Скидка 15% применяется только к товарам.
Промокод −200 применяется после скидки, но до доставки.
Доставка 350 (без НДС).
НДС 20% начисляется только на товары после скидки и промокода; доставку не облагай.

Какова итоговая сумма к оплате?


Вариант с CoT, просим пошаговое рассуждать
Решай по шагам и показывай промежуточные суммы. Не округляй до финала.

В конце выведи строку строго в формате: Итог: <число>
Исходные данные:
— 3 товара по 1200
— Скидка 15% на товары
— Промокод −200 после скидки
— Доставка 350 без НДС
— НДС 20% только на товары



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

#ai #cot
1🔥13👍2
Рассуждение (reasoning) в LLM: ключ к решению сложных задач

В современных LLM рассуждение позволяет моделям анализировать данные, принимать обоснованные решения и решать задачи, требующие логики. Например, вместо простого ответа на вопрос о времени в пути, модель может объяснить шаги расчета.

Рассуждение в LLM — это способность модели выявлять закономерности, связывать информацию и обосновывать выводы. Это важно для задач анализа, прогнозирования и создания новых знаний.

Chain-of-Thought (CoT) — метод, который заставляет модель формировать логические цепочки. Например, при решении математической задачи модель объясняет каждый шаг.

ReAct Prompting — комбинированный подход, объединяющий рассуждение и действия. Модель может выполнять вычисления или поиск информации, а затем обосновывать результат.

Применение
- Решение математических и логических задач.
- Анализ текста, суммирование документов или поиск ключевых моментов.
- Автоматизация обслуживания клиентов, ответы на запросы и обработка жалоб.
- Рассуждение повышает точность ответов в критических областях (медицина, финансы).
- и т.д и т.п.

Во многих современных LLM уже встроено рассуждение которое можно активировать. ChatGPT 5 сам принимает решение когда нужно включить рассуждение.

👉 Мой частный клуб по нейросетям

#ai #reasoning
1👍6
Self-Consistency – Самосогласованность: как повысить точность ответов LLM

Техника Self-Consistency помогает улучшить точность ответов, минимизируя влияние ошибок. Это особенно актуально в сферах, где ошибки имеют серьёзные последствия — медицине, юриспруденции, финансах.

Самосогласованность — это метод промпт-инжиниринга, при котором модель генерирует несколько ответов на один вопрос и выбирает наиболее логичный или часто встречающийся.

Почему это работает
Устранение противоречий: Если модель даёт разные ответы, выбор наиболее часто повторяющегося снижает вероятность ошибок.
Повышение точности: Повторение запроса и анализ ответов позволяют выявить наиболее надёжные данные.
Согласованность: В задачах с жёсткими правилами (например, юридических или медицинских) самосогласованность гарантирует последовательность ответов.

Применение
Финансовые данные: При анализе тенденций за 12 месяцев модель может предложить несколько вариантов, но наиболее согласованный ответ будет отражать рост доходов, снижение расходов и увеличение инвестиций.

Синтез информации: Если требуется объединить данные из нескольких источников, самосогласованность помогает выделить общие ключевые моменты, учитывая все источники.

Как применять самосогласованность
1. Задавайте модель один и тот же вопрос несколько раз, чтобы получить разные ответы. Или попросите решить задачу N количество раз.
2. Используйте структурированные промпты: Например: "Найди информацию о [тема], используя источники [1], [2], [3]. Выберите наиболее согласованный ответ."
3. Анализируйте результаты и отмечайте повторяющиеся факты или шаги, чтобы выбрать оптимальный ответ.

Пример
Реши следующую задачу 5 раз, каждый раз предоставляя полное объяснение:
Если 2 middle разработчика могут сделать проект за 170 часов, то за сколько часов сделают проект 3 junior разработчика?

После решения выбери наиболее часто встречающийся ответ и объясни, почему он, вероятно, является правильным.


#ai #промптинжиниринг #ии
1👍13
Что такое векторная база данных?

Обычные базы данных (БД) хранят информацию в привычном формате: строки, числа, даты. Поиск в них основан на точном совпадении или фильтрации по определённым критериям.
Например, вы ищете пользователя по имени или товар по артикулу.

Но как быть с неструктурированными данными, такими как тексты, изображения или аудио, где нужно искать не по точному совпадению, а по смыслу? 🤷

Именно здесь на помощь приходят векторные базы данных. Они хранят информацию в виде векторов — массивов чисел, которые описывают объект.

Чтобы превратить сложный объект, например, предложение, в вектор, используют специальные модели нейросети. Этот процесс называется эмбеддингом. У похожих по смыслу объектов будут очень похожие числовые векторы.

В отличие от традиционных БД, векторная база ищет нужные данные не по ключам, а по математической близости векторов.
Алгоритмы вычисляют расстояние между векторами (например, с помощью косинусного расстояния) и выдают наиболее релевантные результаты. Это и есть поиск по эмбеддингам.

Векторные БД — это не замена SQL или NoSQL базам, а отдельный инструмент, который отлично решает задачи, где нужен семантический поиск.

Например, в приложениях с ИИ, где применяется RAG (Retrieval-Augmented Generation).
В этом подходе большая языковая модель (LLM) может быстро найти в векторной базе релевантный документ или фрагмент текста и использовать его как контекст для своего ответа. Таким образом, LLM не нужно хранить всю информацию в своей памяти.

#ai
1👍23
Эмбеддинги и векторная база на практике

Итак, мы знаем, что векторная база работает с эмбеддингами. Но что это за "массивы чисел" и как они создаются?

Эмбеддинг — это результат работы модели, которая преобразует сложные данные в числовое представление. Существуют различные типы эмбеддингов в зависимости от данных, с которыми они работают.

▫️ Текстовые кодируют смысл слов и предложений. Популярные модели: text-embedding-3-large, mxbai-embed-large.
▫️ Графовые отражают структуру связей между объектами.
▫️ Мультимодальные объединяют разные типы данных. Например, модель CLIP может закодировать изображение вместе с его текстовым описанием.

Размерность вектора может варьироваться от сотен до тысяч чисел. Например, предложение "Привет, мир" может быть преобразовано в вектор из 768 чисел.

Когда вы отправляете запрос, он также сначала превращается в эмбеддинг. Векторная база данных сравнивает его с векторами, которые уже есть в базе, и находит наиболее «близкие».

Пример запроса:
1. Запрос: "новости про AI"
2. Создаётся эмбеддинг запроса: например, [0.12, -0.34, 0.56, ..., 0.05]
3. Векторная база ищет в своей коллекции векторы, которые максимально похожи на вектор запроса.
4. Результат: возвращаются документы или фрагменты текста, которые семантически связаны с "новостями про AI".

Понимание этого процесса важно для разработчика. Качество поиска зависит от модели эмбеддингов, которую вы используете, и от выбранной метрики сходства. В конечном счёте, векторная база — это инструмент, который позволяет приложениям с AI работать с огромными объёмами данных, предоставляя релевантные и осмысленные ответы.

#ai
2👍14❤‍🔥3
Chroma DB: Что это, как работает и зачем нужно?

В эпоху ИИ эффективное хранение и поиск векторных данных стало критически важным. Традиционные базы данных не справляются с задачами, требующими анализа смысловой близости текста, изображений и аудио.

Chroma DB — это векторная база данных, которая решает эти задачи, обеспечивая скорость, точность и масштабируемость. Вместо хранения привычных строк и чисел, она работает с векторами-эмбеддингами, позволяя находить информацию по "смыслу".

Например, при поиске в каталоге по запросу "уютный дом с садом", Chroma DB найдет похожие объекты, даже если в их описании нет этих конкретных слов.

Эта база данных становится основой для приложений с ИИ.

Она используется в:
▫️ Чат-ботах на базе RAG. Chroma DB выступает "памятью" для больших языковых моделей (LLM), помогая им находить релевантные данные в огромных массивах информации для генерации точных ответов.

▫️ Системах рекомендаций, она может находить похожие товары или фильмы на основе их характеристик, а не только по тегам.

▫️ Поиске по изображению. Пользователь загружает картинку, а система находит похожие изображения в базе.

Chroma DB можно развернуть локально и она проста в интеграции с такими фреймворками, как LangChain или CrewAI.

👉 Мой частный клуб по нейросетям

#chromadb #ai #datascience #vectordatabase #rag
2👍11
Пример использования Chroma DB

Для использования Chroma DB, вам нужно установить её и затем выполнить несколько простых шагов: инициализировать клиент, создать коллекцию, добавить в неё данные и выполнить поиск.

Установка

Установите библиотеку chromadb с помощью pip:
pip install chromadb


Этот код демонстрирует базовый процесс: от создания коллекции до семантического поиска.
import chromadb

# 1. Инициализация клиента Chroma DB
# Можно запустить в памяти (in-memory) или подключиться к серверу
client = chromadb.Client()

# 2. Создание коллекции (collection)
# Это аналог таблицы в обычной БД
collection = client.create_collection(name="my_documents")

# 3. Добавление данных
# Здесь мы добавляем документы вместе с их ID и метаданными
collection.add(
documents=["Это статья о машинах", "Это статья о компьютерах", "Это о космосе"],
metadatas=[{"source": "статья_1"}, {"source": "статья_2"}, {"source": "статья_3"}],
ids=["doc1", "doc2", "doc3"]
)

# 4. Выполнение поиска
# Ищем документ, который наиболее похож по смыслу на наш запрос
results = collection.query(
query_texts=["Машина времени"],
n_results=1
)

# 5. Вывод результатов
# Векторный поиск найдет "Это статья о машинах", так как "Машина времени" семантически ближе к "машинам", чем к "компьютерам" или "космосу"
print(results)


Разбор кода
client = chromadb.Client() - создаёт клиента, который будет работать с базой данных. В этом примере база данных запускается в памяти.

client.create_collection(...) - коллекция — это основная единица хранения в Chroma DB, куда вы будете добавлять данные.

collection.add(...) - метод add принимает списки: documents (тексты, которые нужно сохранить), metadatas (дополнительная информация о каждом документе) и ids (уникальные идентификаторы).

collection.query(...) - это метод для векторного поиска. Вы передаёте ему query_texts, ваш запрос, и n_results количество ближайших результатов, которые нужно вернуть.

print(results) - выводит найденные документы, которые по смыслу ближе всего к вашему запросу, даже если нет точного совпадения слов.

👉 Мой частный клуб по нейросетям

#chromadb #ai #datascience #vectordatabase #rag
3👍9🔥3
Сегодня День блога!

Поздравляю всех причастных к этому делу.

Интересные факты
* В мире существует более 600 миллионов блогов
* Половина всех блогеров — люди 21-35 лет
* 20,2% блогеров — молодёжь до 20 лет
2🎉13👍6
Как подготовить текстовые данные для векторной базы данных

Чтобы эффективно использовать векторные базы данных, такие как Chroma DB, данные должны быть правильно подготовлены. Этот процесс включает в себя загрузку текста, его разделение на смысловые фрагменты и преобразование в числовые векторы.

Установка необходимых библиотек
Перед тем как начать, установите все необходимые библиотеки с помощью pip. Вам понадобятся chromadb для работы с самой базой, langchain для удобного разделения текста и sentence-transformers для генерации векторов.

pip install chromadb langchain sentence-transformers

Для Windows может еще понадобиться
pip install hf_xetс


Шаг 1: Загрузка текста

Сначала нужно прочитать содержимое вашего текстового файла, например, my_article.txt.
with open('my_article.txt', 'r', encoding='utf-8') as f:
text_data = f.read()


Теперь весь текст готов к дальнейшей обработке.

Шаг 2: Разделение на смысловые фрагменты (Chunking)

Векторные базы данных работают лучше всего с небольшими, осмысленными частями текста. Этот процесс называется чанкингом. Он позволяет модели более точно понять контекст каждого фрагмента и создать качественный вектор-эмбеддинг.

Используем рекурсивный разделитель текста, чтобы сохранить смысловую целостность при его разделении на фрагменты. Он сначала делит текст по крупным разделителям (абзацам), а затем по более мелким (предложениям или словам), чтобы сохранить смысловую целостность каждого фрагмента.

from langchain.text_splitter import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500, # Максимальный размер каждого фрагмента
chunk_overlap=50 # Перекрытие между фрагментами для сохранения контекста
)
chunks = text_splitter.split_text(text_data)


Параметр chunk_overlap важен, так как он помогает избежать потери контекста, если ключевая информация находится на стыке двух фрагментов.

Шаг 3: Генерация векторов (Embeddings)

После разделения текста каждый фрагмент нужно преобразовать в вектор-эмбеддинг. Эмбеддинг — это числовое представление текста, которое улавливает его семантическое значение. Для этого используются специальные модели-эмбеддинги.

Самый простой способ — использовать готовую, предварительно обученную модель из библиотеки sentence-transformers.

from sentence_transformers import SentenceTransformer

model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
embeddings = model.encode(chunks)


Теперь у вас есть список векторов embeddings, где каждый вектор соответствует одному фрагменту текста.

Шаг 4: Индексирование в векторной БД

Финальный шаг — добавление подготовленных данных (фрагментов текста и их векторов) в векторную базу данных. Этот процесс называется индексированием.

Для сохранения данных, которые не исчезнут после завершения скрипта, мы используем постоянное хранилище.

import chromadb

# Используем постоянное хранилище, указав путь к папке 'my_chroma_db'
client = chromadb.PersistentClient(path="./my_chroma_db")

# Создаем коллекцию — аналог таблицы
collection = client.get_or_create_collection(name="my_text_chunks")

# Добавляем данные
collection.add(
documents=chunks,
embeddings=embeddings.tolist(), # Преобразуем numpy-массив в список
ids=[f"id_{i}" for i in range(len(chunks))]
)

print(f"Количество документов в коллекции: {collection.count()}")


Теперь ваши данные готовы к поиску. При запросе Chroma DB сначала преобразует его в вектор, а затем найдёт наиболее близкие векторы из коллекции, возвращая соответствующие им фрагменты. Этот подход обеспечивает быстрый и точный поиск, основанный на смысловой близости.

👉 Мой частный клуб по нейросетям

#ai #chromadb
👍9