Большие языковые модели (LLM) меняют способы доступа к информации и создания интеллектуальных приложений. Чтобы полностью использовать их потенциал, особенно при работе со специфическими знаниями или собственными данными, очень важно создавать высококачественные структурированные векторные наборы данных. Производительность и точность LLM напрямую зависят от качества исходных данных. Плохо подготовленные наборы данных могут привести к некачественным результатам, в то время как хорошо подобранные наборы могут превратить LLM в настоящего эксперта в своей области.
В этом руководстве мы шаг за шагом рассмотрим, как построить автоматизированный конвейер для создания векторных наборов данных, готовых для искусственного интеллекта.
Задача: поиск и подготовка данных для магистрантов
Хотя LLM обучаются на обширных текстовых корпорациях общего назначения, они часто оказываются неэффективными при решении конкретных задач или доменов, таких как ответы на запросы, связанные с продуктами, анализ новостей отрасли или интерпретация отзывов клиентов. Чтобы сделать их по-настоящему полезными, необходимы высококачественные данные, адаптированные под конкретный случай использования.
Эти данные обычно разбросаны по всему Интернету, скрыты за сложной структурой сайта или защищены средствами защиты от ботов.
Наш автоматизированный рабочий процесс решает эту проблему с помощью оптимизированного конвейера, который справляется с самыми сложными этапами создания наборов данных:
- Извлечение веб-данных. Использует Bright Data для масштабного извлечения данных, используя инфраструктуру, ориентированную на искусственный интеллект, для обхода таких проблем, как CAPTCHA и блокировка IP-адресов.
- Структурирование данных. Использует Google Gemini для разбора, очистки и преобразования необработанного контента в хорошо структурированный JSON.
- Семантическое встраивание. Преобразует текст в векторные вкрапления, которые передают богатый контекстный смысл.
- Хранение и поиск. Индексирует векторы в Pinecone, быстрой и масштабируемой базе данных семантического поиска.
- Выходные данные, готовые к использованию в искусственном интеллекте. Получение высококачественных наборов данных, готовых к тонкой настройке, RAG или другим приложениям ИИ, ориентированным на конкретную область.
Обзор основных технологий
Прежде чем приступить к созданию конвейера, давайте рассмотрим основные технологии и то, как каждая из них поддерживает рабочий процесс.
Bright Data: Масштабируемый сбор данных в Интернете
Первым шагом в создании векторного набора данных, пригодного для искусственного интеллекта, является сбор релевантных и высококачественных исходных данных. Хотя некоторые из них могут быть получены из внутренних систем, таких как базы знаний или документация, большая часть часто берется из общедоступного Интернета.
Однако современные веб-сайты используют сложные механизмы защиты от ботов, такие как CAPTCHA, ограничение IP-адреса и отпечатки пальцев браузера, которые затрудняют масштабный скраппинг.
Bright Data решает эту проблему с помощью своего API Web Unlocker, который абстрагирует вас от сложностей сбора данных. Он автоматически обрабатывает ротацию прокси, решение CAPTCHA и эмуляцию браузера, позволяя вам полностью сосредоточиться на данных, а не на том, как получить к ним доступ.
Google Gemini: интеллектуальное преобразование контента
Gemini – это семейство мощных мультимодальных моделей ИИ, разработанных компанией Google, которые отлично справляются с пониманием и обработкой различных типов контента. В нашем конвейере извлечения данных Gemini выполняет три ключевые функции:
- Парсинг содержимого: Обрабатывает необработанный HTML или, что предпочтительнее, очищенный Markdown-контент.
- Извлечение информации: Идентификация и извлечение конкретных точек данных на основе заранее определенной схемы.
- Структурирование данных: Преобразование извлеченной информации в чистый, структурированный формат JSON.
Этот подход, основанный на искусственном интеллекте, дает значительные преимущества по сравнению с традиционными методами, которые опираются на хрупкие селекторы CSS или нестабильные регулярные выражения, особенно в таких случаях, как:
- Динамические веб-страницы – страницы, на которых часто меняется макет или DOM (часто встречается на сайтах электронной коммерции, новостных порталах и других высокоскоростных доменах).
- Неструктурированный контент: Извлечение структурированных данных из длинных или плохо организованных текстовых блоков.
- Сложная логика парсинга: Избегайте необходимости поддерживать и отлаживать пользовательские правила парсинга для каждого сайта или разновидности контента.
Для более глубокого погружения в то, как ИИ преобразует процесс извлечения данных, изучите раздел “Использование ИИ для веб-скрапинга“. Если вы ищете практическое руководство по внедрению Gemini в ваш рабочий процесс скрапинга, ознакомьтесь с нашим полным руководством: Web Scraping with Gemini.
Трансформаторы предложений: Генерация семантических вкраплений
Эмбдинги – это плотные векторные представления текста (или других типов данных) в высокоразмерном пространстве. Эти векторы передают семантический смысл, позволяя представлять похожие фрагменты текста векторами, которые находятся близко друг к другу, измеряемыми с помощью таких метрик, как косинусное сходство или евклидово расстояние. Это свойство важно для таких приложений, как семантический поиск, кластеризация и генерация с расширенным поиском (RAG), где нахождение релевантного контента зависит от семантической близости.
Библиотека Sentence Transformers предоставляет простой в использовании интерфейс для генерации высококачественных вкраплений предложений и абзацев. Построенная на основе Hugging Face Transformers, она поддерживает широкий спектр предварительно обученных моделей, тонко настроенных для семантических задач.
Одна из самых популярных и эффективных моделей в этой экосистеме – All-MiniLM-L6-v2
. Вот почему она так выделяется:
- Архитектура: Основана на архитектуре MiniLM, оптимизированной по скорости и размеру при сохранении высокой производительности.
- Размерность встраивания: Сопоставляет входные данные с 384-мерным векторным пространством, что делает его эффективным и компактным.
- Цель обучения: Тонкая настройка на более чем 1 миллиарде пар предложений с использованием подхода контрастного обучения для улучшения семантического понимания.
- Производительность: Обеспечивает современные или близкие к современным результаты в таких задачах, как сходство предложений, семантическая кластеризация и поиск информации.
- Длина входного текста: обрабатывает до 256 слов (лексем), при этом более длинный текст автоматически обрезается – это важно при разбивке текста на части.
Хотя более крупные модели могут предложить несколько более тонкие вкрапления, All-MiniLM-L6-v2
обеспечивает исключительный баланс между производительностью, эффективностью и стоимостью. Ее 384-мерные векторы являются:
- Быстрее вычислять.
- Менее ресурсоемкий.
- Легче хранить и индексировать.
Для большинства практических случаев использования, особенно на ранних стадиях разработки или в условиях ограниченных ресурсов, этой модели более чем достаточно. Незначительное падение точности в граничных случаях обычно перевешивается значительным выигрышем в скорости и масштабируемости. Поэтому рекомендуется использовать All-MiniLM-L6-v2
при создании первой итерации приложения ИИ или при оптимизации производительности на скромной инфраструктуре.
Pinecone: Хранение и поиск векторных вкраплений
После преобразования текста в векторные вкрапления вам понадобится специализированная база данных для их эффективного хранения, управления и запроса. Традиционные базы данных для этого не предназначены – векторныебазы данных специально созданы для работы с высокоразмерной природой данных вкраплений, что позволяет осуществлять поиск по сходству в реальном времени, необходимый для конвейеров RAG, семантического поиска, персонализации и других приложений, основанных на искусственном интеллекте.
Pinecone – популярная векторная база данных, известная своим удобным для разработчиков интерфейсом, производительностью поиска с низкой задержкой и полностью управляемой инфраструктурой. Она эффективно управляет сложностями векторного индексирования и поиска в масштабе, абстрагируясь от тонкостей инфраструктуры векторного поиска. Его ключевые компоненты включают:
- Индексы: Контейнеры для хранения векторов.
- Векторы: Фактические вкрапления с соответствующими метаданными.
- Коллекции: Статические снимки индексов для резервного копирования и создания версий.
- Пространства имен: Разделение данных в индексе для многопользовательской работы.
Pinecone предлагает две архитектуры развертывания: Serverless и Pod-Based. Для большинства случаев использования, особенно в начале пути или при работе с динамическими нагрузками, рекомендуется использовать бессерверную архитектуру из-за ее простоты и экономичности.
Установка и предварительные условия
Перед созданием трубопровода убедитесь, что следующие компоненты правильно настроены.
Пререквизиты
- В вашей системе должен быть установленPython 3.9 или более поздней версии
- Соберите следующие учетные данные API
:Polylang placeholder do not modify
Инструкции по созданию каждого ключа API см. ниже в разделах, посвященных настройке конкретного инструмента.
Установите необходимые библиотеки
Установите основные библиотеки Python для этого проекта:
pip install requests python-dotenv google-generativeai sentence-transformers pinecone
Эти библиотеки предоставляют:
requests
: Популярный HTTP-клиент для взаимодействия с API(руководство по запросам)python-dotenv
: безопасная загрузка ключей API из переменных окруженияgoogle-generativeai
: Официальный Gemini SDK от Google (также поддерживает JavaScript, Go и другие языки).предложения-трансформеры
: Предварительно обученные модели для генерации семантических векторных вкрапленийpinecone
: SDK для векторной базы данных Pinecone( доступныSDK дляязыков Python, Node.js, Go и других)
Настройка переменных среды
Создайте файл .env
в корневом каталоге вашего проекта и добавьте в него ключи API:
BRIGHT_DATA_API_KEY="your_bright_data_api_key_here"
GEMINI_API_KEY="your_gemini_api_key_here"
PINECONE_API_KEY="your_pinecone_api_key_here"
Настройка ярких данных
Чтобы воспользоваться программой Web Unlocker от Bright Data:
- Создайте токен API
- Настройте зону Web Unlocker с панели управления Bright Data
Примеры реализации и код интеграции можно найти в репозитории Web Unlocker на GitHub.
Если вы все еще сравниваете решения, это сравнение инструментов для AI-скреппинга дает представление о том, как Bright Data выглядит в сравнении с другими платформами.
Настройка Близнецов
Чтобы сгенерировать ключ API Gemini:
- Перейдите в Google AI Studio
- Нажмите “+ Создать ключ API”.
- Скопируйте ключ и храните его в надежном месте
Совет: Бесплатного уровня достаточно для разработки и мелкомасштабного тестирования. Для производственного использования, где вам может потребоваться более высокая пропускная способность (RPM/RPD), большие окна токенов (TPM) или конфиденциальность корпоративного уровня и доступ к расширенным моделям, обратитесь к ограничениям тарифов и ценовым планам.
Установка булавок
- Зарегистрируйтесь на сайте Pinecone.io
- Скопируйте свой ключ API с приборной панели
- Чтобы создать новый индекс
:Polylang, не изменяйте
его
После завершения настройки вы увидите индекс с зеленым статусом и нулевыми записями.
Создание трубопровода: Поэтапное внедрение
Теперь, когда все необходимые условия настроены, давайте построим конвейер данных на практическом примере отзывов о товарах MacBook Air M1 от Walmart.
Шаг 1: Получение данных с помощью Bright Data Web Unlocker
Основой нашего конвейера является получение необработанного HTML-контента с целевых URL-адресов. Web Unlocker от Bright Data отлично справляется с обходом сложных мер по защите от скаппинга, обычно применяемых на сайтах электронной коммерции, таких как Walmart.
Начнем с этой реализации для получения содержимого веб-страницы:
import requests
import os
from dotenv import load_dotenv
# Load API key from environment
load_dotenv()
BRIGHT_DATA_API_KEY = os.getenv("BRIGHT_DATA_API_KEY")
def fetch_page(url: str) -> str:
"""Fetch page content using Bright Data Web Unlocker (Markdown format)"""
try:
response = requests.post(
"https://api.brightdata.com/request",
headers={
"Authorization": f"Bearer {BRIGHT_DATA_API_KEY}",
"Content-Type": "application/json",
},
json={
"zone": "web_unlocker2",
"url": url,
"format": "raw",
"data_format": "markdown", # Direct HTML-to-Markdown conversion
},
timeout=60,
)
if response.status_code == 200 and len(response.text) > 1000:
return response.text
except Exception as e:
print(f"Request failed: {str(e)}")
return None
# Example usage
walmart_url = "https://www.walmart.com/reviews/product/609040889?page=1"
page_content = fetch_page(walmart_url)
if page_content:
print(f"Success! Retrieved {len(page_content)} characters")
else:
print("Failed to fetch page")
Зачем использовать Markdown вместо необработанного HTML? В нашем конвейере мы запрашиваем контент в формате Markdown(data_format: 'markdown'
) по нескольким важным причинам. Markdown удаляет HTML-теги, стилистику и прочий шум, уменьшая сложность и оставляя только основное содержание. Это приводит к значительному уменьшению количества лексем, что делает обработку LLM более эффективной. Кроме того, семантическая структура сохраняется в более чистом и читабельном формате, что повышает ясность и скорость обработки. Такие операции, как генерация вкраплений и векторное индексирование, становятся быстрее и легче.
Подробнее о том, почему современные агенты ИИ предпочитают Markdown, читайте в статье “Почему новые агенты ИИ выбирают Markdown, а не HTML“.
Шаг 2: Работа с пагинацией
Walmart распространяет отзывы о товарах на многочисленных страницах. Чтобы получить полный набор данных, необходимо реализовать обработку пагинации. Вам необходимо:
- Создайте правильный URL страницы (
?page=1
,?page=2
и т.д.). - Получение содержимого для каждой страницы
- Определите, есть ли “следующая страница” или нет
- Продолжайте, пока не останется свободных страниц
Вот простой цикл пагинации, который получает содержимое до тех пор, пока не будет найдена ссылка page=n+1
:
current_page = 1
while True:
url = f"https://www.walmart.com/reviews/product/609040889?page={current_page}"
page_content = fetch_page(url)
if not page_content:
print(f"Stopping at page {current_page}: fetch failed or no content.")
break
# Do something with the fetched content here
print(f"Fetched page {current_page}")
# Check for presence of next page reference
if f"page={current_page + 1}" not in page_content:
print("No next page found. Ending pagination.")
break
current_page += 1
Шаг 3: Извлечение структурированных данных с помощью Google Gemini
Теперь с помощью Google Gemini мы извлечем из отзывов конкретную информацию и структурируем ее в виде JSON. Таким образом, неструктурированный текст превращается в упорядоченные данные, которые наша векторная база данных сможет эффективно индексировать.
Мы будем использовать модель gemini-2.0-flash
, которая обладает впечатляющими характеристиками для нашего случая использования:
- Входной контекст: 1 048 576 лексем
- Лимит выхода: 8 192 токена
- Мультимодальная поддержка: Текст, код, изображения, аудио и видео
В нашем случае текст в формате markdown на странице отзывов Walmart обычно содержит около 3 000 лексем, что вполне соответствует лимиту модели. Это означает, что мы можем отправить всю страницу сразу, не разбивая ее на более мелкие фрагменты.
Если ваши документы превышают размеры контекстного окна, вам придется применять стратегии разбиения на части. Но для обычных веб-страниц возможности Gemini делают это ненужным.
Вот пример функции Python, которая использует Gemini для извлечения отзывов в структурированном формате JSON:
import google.generativeai as genai
import json
# Initialize Gemini with JSON output configuration
model = genai.GenerativeModel(
model_name="gemini-2.0-flash",
generation_config={"response_mime_type": "application/json"},
)
def extract_reviews(markdown: str) -> list[dict]:
"""Extract structured review data from Markdown using Gemini."""
prompt = f"""
Extract all customer reviews from this Walmart product page content.
Return a JSON array of review objects with the following structure:
{{
"reviews": [
{{
"date": "YYYY-MM-DD or original date format if available",
"title": "Review title/headline",
"description": "Review text content",
"rating": <integer from 1–5>
}}
]
}}
Rules:
- Include all reviews found on the page
- Use null for any missing fields
- Convert ratings to integers (1–5)
- Extract the full review text, not just snippets
- Preserve original review text without summarizing
Here's the page content:
{markdown}
"""
response = model.generate_content(prompt)
result = json.loads(response.text)
# Normalize and clean results
return [
{
"date": review.get("date"),
"title": review.get("title"),
"description": review.get("description", "").strip(),
"rating": review.get("rating"),
}
for review in result.get("reviews", [])
]
Оперативное проектирование – ключевой момент при работе с LLM. В нашей реализации мы установили response_mime_type: "application/json"
, чтобы Gemini возвращала корректный JSON, устраняя необходимость в сложном разборе текста. Сама подсказка тщательно продумана, чтобы уменьшить количество галлюцинаций, поскольку Gemini должен полагаться только на предоставленный контент. Она также использует строгую схему JSON для обеспечения структурной согласованности, сохраняет полный текст рецензии без резюмирования и изящно обрабатывает отсутствующие поля.
После обработки страницы отзывов Walmart вы получите структурированные данные следующего вида:
[
{
"date": "Apr 13, 2025",
"title": "Better than buying OPEN BOX",
"description": "I bought an older product OPEN BOX (which I consider UNUSED) from another website. The battery was dead. Walmart offered NEW at a lower price. WOW!!!!",
"rating": 5
},
{
"date": "Dec 8, 2024",
"title": "No support",
"description": "The young man who delivered my laptop gave me the laptop with no receipt or directions. I asked where my receipt and some kind of manual were. He said it would be under my purchases. I would happily change this review if I knew where to go for help and support. The next day I went to the electronics department for help, and he had no idea.",
"rating": 3
}
// ... more reviews
]
Рабочий пример, объединяющий все этапы (получение, обработку и извлечение), можно посмотреть в полной реализации на GitHub.
Шаг 4: Генерация векторных вкраплений с помощью трансформаторов предложений
Имея чистые, структурированные данные о рецензиях в формате JSON, мы теперь генерируем семантические векторные вкрапления для каждой рецензии. Эти вкрапления будут использоваться для последующих задач, таких как семантический поиск или индексация в векторной базе данных, например Pinecone.
Чтобы передать весь контекст отзыва, мы объединяем название и описание отзыва в одну строку перед встраиванием. Это помогает модели более эффективно кодировать как настроение, так и тему.
Вот пример кода:
from sentence_transformers import SentenceTransformer
# Load the embedding model
model = SentenceTransformer("all-MiniLM-L6-v2")
def generate_embeddings(reviews):
"""Generate 384-dimensional vector embeddings from review titles and descriptions."""
texts = []
valid_indices = []
# Combine title and description into a single string for embedding
for idx, review in enumerate(reviews):
text_parts = []
if review.get("title"):
text_parts.append(f"Review Title: {review['title']}")
if review.get("description"):
text_parts.append(f"Review Description: {review['description']}")
if text_parts:
texts.append(". ".join(text_parts))
valid_indices.append(idx)
# Generate embeddings using batch processing
embeddings = model.encode(
texts, show_progress_bar=True, batch_size=32, convert_to_numpy=True
).tolist()
# Attach embeddings back to original review objects
for emb_idx, review_idx in enumerate(valid_indices):
reviews[review_idx]["embedding"] = embeddings[emb_idx]
return reviews
Что делает этот код:
- Инициализация модели: Загружает модель
all-MiniLM-L6-v2
, которая возвращает 384-мерные плотные вкрапления. - Подготовка входа: Объединяет
название
иописание
каждого обзора в одну строку. - Пакетное кодирование: Использует
model.encode()
с пакетным кодированием для эффективной обработки:Polylang placeholder do not modify
- Embedding Injection: Прикрепляет каждый вектор обратно к соответствующему объекту обзора под ключом
"embedding"
.
Важное замечание: Pinecone не поддерживает нулевые
значения в метаданных. Если какое-либо поле отсутствует, вы должны полностью опустить ключ при загрузке в Pinecone. Не используйте "N/A"
или пустые строки, если они не имеют особого значения в вашей логике фильтрации.
Хотя функция санитарной обработки здесь не показана (чтобы сохранить читабельность кода), окончательная реализация будет включать очистку метаданных перед вводом.
После создания вставки каждый объект обзора включает в себя 384-мерный вектор:
{
"date": "Apr 9, 2024",
"title": "Amazing Laptop!",
"description": "This M1 MacBook Air is incredibly fast and the battery lasts forever.",
"rating": 5,
"embedding": [0.0123, -0.0456, 0.0789, ..., 0.0345] // 384 dimensions
}
После создания вкраплений наши обзоры готовы к векторному хранению в Pinecone.
Шаг 5: Хранение вкраплений и метаданных в Pinecone
Последний шаг нашего конвейера – загрузка встроенных обзоров в Pinecone.
Вот код на языке Python для загрузки данных в Pinecone:
import uuid
from pinecone import Pinecone, Index
# Initialize Pinecone client with your API key
pc = Pinecone(api_key="PINECONE_API_KEY")
index = pc.Index("brightdata-ai-dataset") # Replace with your actual index name
# Sample review data (with embeddings already attached)
reviews_with_embeddings = [
{
"date": "Apr 9, 2024",
"title": "Amazing Laptop!",
"description": "This M1 MacBook Air is incredibly fast and the battery lasts forever.",
"rating": 5,
"embedding": [0.0123, -0.0456, ..., 0.0789], # 384-dimensional vector
}
# ... more reviews
]
# Prepare vector records for upload
vectors = []
for review in reviews_with_embeddings:
if "embedding" not in review:
continue # Skip entries without embeddings
vectors.append(
{
"id": str(uuid.uuid4()), # Unique vector ID
"values": review["embedding"],
"metadata": {
"title": review.get("title"),
"description": review.get("description"),
"rating": review.get("rating"),
# Add more metadata fields if needed
},
}
)
# Batch upload to Pinecone (100 vectors per request)
for i in range(0, len(vectors), 100):
batch = vectors[i : i + 100]
index.upsert(vectors=batch)
Каждый вектор, который вы загружаете в Pinecone, должен содержать:
id
: Уникальный строковый идентификатор (обязательно)значения
: Сам вектор (список плавающих чисел, например, 384-мерный)метаданные
: Необязательные пары ключ-значение для фильтрации и контекста (совместимые с JSON)
Пример векторной структуры:
Как только загрузка будет завершена, ваш индекс Pinecone будет заполнен векторами обзоров:
Ваш набор векторных данных, готовый для искусственного интеллекта, теперь хранится в Pinecone и готов к следующим шагам 🔥.
Рабочий пример, объединяющий все этапы (генерация вложений, загрузка в Pinecone), можно посмотреть на GitHub.
(Необязательно, но рекомендуется) Использование набора данных AI-Ready
Теперь, когда ваши вкрапления проиндексированы в Pinecone, вы можете использовать их в таких приложениях, как семантический поиск и системы RAG. В этом шаге показано, как запрашивать базу данных векторов и генерировать интеллектуальные ответы.
Семантический поиск
Самый простой способ использовать векторный набор данных – это семантический поиск. В отличие от поиска по ключевым словам, семантический поиск позволяет пользователям задавать запросы на естественном языке и получать концептуально схожий контент, даже если в нем нет одинаковых слов.
Давайте протестируем систему с помощью запросов на естественном языке:
queries = [
"good price for students",
"lightweight and good for travel",
]
По запросу “хорошая цена для студентов” вы можете увидеть:
#1 (Score: 0.6201)
ID: 75878bdc-8d96-416a-8292-484971c3bd61
Date: Aug 3, 2024
Rating: 5.0
Description: Just what my daughter needed for college and the price was perfect
#2 (Score: 0.5868)
ID: 758963ae-0927-4e82-bece-d098991f5a73
Date: Jun 13, 2024
Rating: 5.0
Description: The price was right. Perfect graduation present for my grandson
🙌 Это прекрасно работает! Запросы на естественном языке возвращают высоко релевантные результаты.
Именно так работает семантический поиск:
- Встраивание запросов: Поисковый запрос преобразуется в вектор с помощью той же модели
All-MiniLM-L6-v2
, которая используется для индексации. - Поиск векторов: Pinecone находит наиболее похожие векторы, используя косинусное сходство.
- Поиск метаданных: Результаты включают как оценки сходства, так и связанные с ними метаданные.
Полную рабочую реализацию смотрите на сайте: Python-файл клиента семантического поиска.
За пределами поиска: Расширенное поколение поиска (RAG)
Если у вас работает семантический поиск, вам остается сделать всего один шаг до создания системы RAG на базе LLM. Retrieval Augmented Generation (RAG) позволяет вашему LLM генерировать обоснованные ответы, используя внешний контекст, например ваш векторный набор данных.
RAG Flow:
- Пользователь задает вопрос (например, “Подходит ли этот MacBook для студентов колледжа?”).
- Семантический поиск извлекает релевантные документы из Pinecone.
- Полученный контекст + вопрос отправляются в LLM, например Google Gemini.
- LLM отвечает фактами из вашего набора данных.
Примеры ответов RAG:
🤔 User: Is the battery life good for college use?
🤖 Assistant: Yes, users report long battery life—enough to last through full days of classes and study.
🤔 User: How does this compare to a Chromebook?
🤖 Assistant: One review says the MacBook Air "works so smoothly compared to a Chromebook".
Посмотрите полный код, используемый для RAG и семантического поиска: Реализация чатбота RAG.
Следующие шаги
Вы успешно построили полный конвейер для создания векторных наборов данных, готовых для ИИ. Вот как расширить и оптимизировать вашу реализацию:
- Масштабный сбор данных: Для более обширных потребностей в данных изучите полную инфраструктуру веб-данных Bright Data AI-Ready, обеспечивающую неограниченный доступ к веб-данным, оптимизированный для моделей и агентов искусственного интеллекта.
- Экспериментируйте с моделями встраивания: Несмотря на эффективность модели
All-MiniLM-L6-v2
, в некоторых случаях вы можете получить лучшие результаты, переключившись на более крупные или многоязычные модели. Вы также можете попробовать встроить API от Google Gemini и OpenAI. - Уточняйте подсказки для извлечения: Настройте подсказки Gemini для различных структур веб-сайтов или схем данных, которые вам нужно извлечь.
- Используйте расширенные возможности Pinecone: Изучите фильтрацию, пространства имен, индексацию метаданных и гибридный поиск, погрузившись в официальную документацию Pinecone.
- Автоматизируйте конвейер: Интегрируйте этот конвейер в производственный рабочий процесс, используя такие инструменты, как Apache Airflow или Prefect для оркестровки, AWS Step Functions или Google Cloud Workflows для облачного нативного планирования.
- Создайте приложение, работающее на основе искусственного интеллекта: Используйте компоненты семантического поиска или RAG для создания реальных инструментов, таких как чат-боты для поддержки клиентов, поиск по базам знаний и рекомендательные системы.
Заключение
Вы успешно построили полный и надежный конвейер, который создает и управляет векторными наборами данных, готовыми для ИИ, превращая необработанные веб-данные в ценные активы для больших языковых моделей. Объединив Bright Data для масштабируемого веб-скреппинга, Google Gemini для интеллектуального структурированного извлечения, Sentence Transformers для создания семантических вкраплений и Pinecone для хранения и извлечения векторных данных, вы эффективно подготовили свои пользовательские данные для улучшения приложений LLM.
Такой подход позволяет LLM получить знания в конкретной области, обеспечивая более точные, релевантные и ценные решения на базе ИИ.
Кредитная карта не требуется
Дополнительное чтение и ресурсы
Изучите эти ресурсы, чтобы углубить свое понимание ИИ, LLM и извлечения веб-данных:
- RAG & Chatbots:
- AI & Web Scraping Techniques:
- Тонкая настройка и наборы данных:
- Core Concepts: