Blog / AI
AI

Criando conjuntos de dados vetoriais prontos para IA para LLMs: Um guia com Bright Data, Google Gemini e Pinecone

23 min de leitura
Building AI-Ready Vector Datasets for LLMs blog image

Os modelos de linguagem ampla (LLMs) estão transformando a forma como acessamos informações e criamos aplicativos inteligentes. Para aproveitar todo o seu potencial, especialmente com conhecimento específico do domínio ou dados proprietários, é fundamental criar conjuntos de dados vetoriais estruturados e de alta qualidade. O desempenho e a precisão de um LLM estão diretamente ligados à qualidade de seus dados de entrada. Conjuntos de dados mal preparados podem levar a resultados abaixo da média, enquanto os bem selecionados podem transformar um LLM em um verdadeiro especialista no domínio.

Neste guia, explicaremos passo a passo como criar um pipeline automatizado para gerar conjuntos de dados vetoriais prontos para IA.

O desafio: obtenção e preparação de dados para LLMs

Embora os LLMs sejam treinados em vastos corpora de texto de uso geral, eles geralmente ficam aquém quando aplicados a tarefas ou domínios específicos, como responder a consultas relacionadas a produtos, analisar notícias do setor ou interpretar o feedback do cliente. Para que sejam realmente úteis, você precisa de dados de alta qualidade adaptados ao seu caso de uso.

Em geral, esses dados estão espalhados pela Web, ocultos por trás de estruturas complexas de sites ou protegidos por medidas antibot.

Nosso fluxo de trabalho automatizado resolve isso com um pipeline simplificado que lida com as partes mais difíceis da criação de conjuntos de dados:

  • Extração de dados da Web. Usa a Bright Data para extrair dados em escala, aproveitando sua infraestrutura focada em IA para contornar desafios como CAPTCHAs e bloqueios de IP.
  • Estruturação de dados. Usa o Google Gemini para analisar, limpar e converter conteúdo bruto em JSON bem estruturado.
  • Incorporação semântica. Transforma o texto em embeddings vetoriais que capturam o rico significado contextual.
  • Armazenamento e recuperação. Indexa vetores no Pinecone, um banco de dados de pesquisa semântica rápido e dimensionável.
  • Saída pronta para IA. Produz conjuntos de dados de alta qualidade prontos para ajuste fino, RAG ou outros aplicativos de IA específicos do domínio.

Visão geral das principais tecnologias

Antes de criar o pipeline, vamos dar uma olhada rápida nas principais tecnologias envolvidas e em como cada uma delas dá suporte ao fluxo de trabalho.

Bright Data: Coleta de dados escalonável na Web

A primeira etapa para criar um conjunto de dados vetoriais pronto para IA é coletar dados de origem relevantes e de alta qualidade. Embora alguns deles possam ser provenientes de sistemas internos, como bases de conhecimento ou documentação, uma grande parte costuma ser obtida na Web pública.

No entanto, os sites modernos usam mecanismos antibot sofisticados, como CAPTCHAs, limitação da taxa de IP e impressão digital do navegador, que dificultam a raspagem em escala.

A Bright Data resolve esse desafio com sua API Web Unlocker, que abstrai a complexidade da coleta de dados. Ela lida automaticamente com a rotação de proxy, resolução de CAPTCHA e emulação de navegador, permitindo que você se concentre totalmente nos dados e não em como acessá-los.

Google Gemini: transformação inteligente de conteúdo

O Gemini é uma família de modelos avançados de IA multimodal desenvolvidos pelo Google que se destacam na compreensão e no processamento de vários tipos de conteúdo. Em nosso pipeline de extração de dados, o Gemini desempenha três funções principais:

  1. Análise de conteúdo: Processa HTML bruto ou, de preferência, conteúdo Markdown limpo.
  2. Extração de informações: Identifica e extrai pontos de dados específicos com base em um esquema predefinido.
  3. Estruturação de dados: Transforma as informações extraídas em um formato JSON limpo e estruturado.

Essa abordagem baseada em IA oferece grandes vantagens em relação aos métodos tradicionais que dependem de seletores CSS frágeis ou expressões regulares frágeis, especialmente em casos de uso como:

  • Páginas da Web dinâmicas – páginas em que o layout ou o DOM muda com frequência (comum em sites de comércio eletrônico, portais de notícias e outros domínios de alta velocidade).
  • Conteúdo não estruturado: Extração de dados estruturados de blocos de texto longos ou mal organizados.
  • Lógica de análise complexa: Evitar a necessidade de manter e depurar regras de raspagem personalizadas para cada site ou variação de conteúdo.

Para saber mais sobre como a IA está transformando o processo de extração de dados, explore Usando IA para raspagem na Web. Se você estiver procurando um tutorial prático que mostre como implementar o Gemini em seu fluxo de trabalho de raspagem, consulte nosso guia abrangente: Web Scraping with Gemini.

Transformadores de frases: Geração de embeddings semânticos

Embeddings são representações vetoriais densas de texto (ou outros tipos de dados) em um espaço de alta dimensão. Esses vetores capturam o significado semântico, permitindo que partes semelhantes do texto sejam representadas por vetores próximos uns dos outros, medidos usando métricas como similaridade de cosseno ou distância euclidiana. Essa propriedade é importante para aplicativos como pesquisa semântica, agrupamento e geração aumentada de recuperação (RAG), em que a localização de conteúdo relevante depende da proximidade semântica.

A biblioteca Sentence Transformers oferece uma interface fácil de usar para gerar embeddings de frases e parágrafos de alta qualidade. Criada com base na Hugging Face Transformers, ela oferece suporte a uma ampla variedade de modelos pré-treinados e ajustados para tarefas semânticas.

Um dos modelos mais populares e eficazes desse ecossistema é o all-MiniLM-L6-v2. Veja por que ele se destaca:

  • Arquitetura: Baseada na arquitetura MiniLM, otimizada para velocidade e tamanho, mantendo um desempenho sólido.
  • Dimensão de incorporação: Mapeia as entradas em um espaço vetorial de 384 dimensões, tornando-o eficiente e compacto.
  • Objetivo do treinamento: Aperfeiçoado em mais de 1 bilhão de pares de frases usando uma abordagem de aprendizagem contrastiva para melhorar a compreensão semântica.
  • Desempenho: Oferece resultados de última geração ou quase de última geração em tarefas como similaridade de frases, agrupamento semântico e recuperação de informações.
  • Comprimento de entrada: lida com até 256 partes de palavras (tokens), com textos mais longos truncados automaticamente – uma consideração importante durante a fragmentação de texto.

Embora modelos maiores possam oferecer incorporações com um pouco mais de nuances, o all-MiniLM-L6-v2 oferece um equilíbrio excepcional entre desempenho, eficiência e custo. Seus 384 vetores dimensionais são:

  • Mais rápido para computar.
  • Menos uso intensivo de recursos.
  • Mais fácil de armazenar e indexar.

Para a maioria dos casos de uso prático, especialmente no desenvolvimento em estágio inicial ou em ambientes com recursos limitados, esse modelo é mais do que suficiente. A queda marginal na precisão em casos extremos geralmente é compensada pelos ganhos significativos em velocidade e escalabilidade. Portanto, é recomendável usar o all-MiniLM-L6-v2 ao criar a primeira iteração de seu aplicativo de IA ou ao otimizar o desempenho em uma infraestrutura modesta.

Pinecone: Armazenamento e pesquisa de embeddings vetoriais

Depois que o texto é transformado em embeddings vetoriais, você precisa de um banco de dados especializado para armazenar, gerenciar e consultar esses dados com eficiência.Os bancos de dados tradicionais não foram projetados para isso:os bancos de dados vetoriais são criados especificamente para lidar com a natureza altamente dimensional dos dados incorporados, permitindo a pesquisa de similaridade em tempo real, essencial para pipelines RAG, pesquisa semântica, personalização e outros aplicativos orientados por IA.

O Pinecone é um banco de dados vetorial popular conhecido por sua interface amigável ao desenvolvedor, desempenho de pesquisa de baixa latência e infraestrutura totalmente gerenciada. Ele gerencia com eficiência as complexidades da indexação vetorial e da pesquisa em escala, abstraindo as complexidades da infraestrutura de pesquisa vetorial. Seus principais componentes incluem:

  • Índices: Recipientes de armazenamento para seus vetores.
  • Vetores: Os embeddings reais com metadados associados.
  • Coleções: Instantâneos estáticos de índices para backup e controle de versão.
  • Namespaces: Particionamento de dados em um índice para multilocação.

A Pinecone oferece duas arquiteturas de implementação: Serverless e Pod-Based. Para a maioria dos casos de uso, especialmente quando se está começando ou lidando com cargas dinâmicas, o Serverless é a opção recomendada devido à sua simplicidade e eficiência de custo.

Configuração e pré-requisitos

Antes de criar o pipeline, verifique se os seguintes componentes estão configurados corretamente.

Pré-requisitos

  • O Python 3.9 ou posterior deve estar instalado em seu sistema
  • Reúna as seguintes credenciais de API
    :Polylang placeholder não modificar

Consulte as seções de configuração específicas da ferramenta abaixo para obter instruções sobre como gerar cada chave de API.

Instalar as bibliotecas necessárias

Instale as principais bibliotecas Python para este projeto:

pip install requests python-dotenv google-generativeai sentence-transformers pinecone

Essas bibliotecas oferecem:

  • solicitações: Um cliente HTTP popular para interagir com APIs(guia de solicitações)
  • python-dotenv: carrega com segurança chaves de API de variáveis de ambiente
  • google-generativeai: Gemini SDK oficial do Google (também suporta JavaScript, Go e outras linguagens)
  • transformadores de frases: Modelos pré-treinados para gerar embeddings de vetores semânticos
  • pinecone: SDK para o banco de dados vetorial da Pinecone(SDKs de linguagem disponíveis para Python, Node.js, Go e outros)

Configurar variáveis de ambiente

Crie um arquivo .env no diretório raiz do seu projeto e adicione suas chaves de 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"

Configuração de dados brilhantes

Para usar o Web Unlocker da Bright Data:

  1. Criar um token de API
  2. Configure uma zona do Web Unlocker em seu painel de controle da Bright Data

Para obter exemplos de implementação e código de integração, explore o repositório do Web Unlocker no GitHub.

Se você ainda estiver comparando soluções, esta comparação de ferramentas de raspagem de IA oferece insights sobre como a Bright Data se compara a outras plataformas.

Configuração de Gêmeos

Para gerar uma chave de API Gemini:

  1. Ir para o Google AI Studio
  2. Clique em “+ Criar chave de API”
  3. Copie a chave e armazene-a com segurança

Dica: a camada gratuita é suficiente para desenvolvimento e testes em pequena escala. Para uso em produção, onde você pode precisar de maior taxa de transferência (RPM/RPD), janelas de token maiores (TPM) ou privacidade de nível empresarial e acesso a modelos avançados, consulte os limites de taxa e os planos de preços.

Configuração de pinhas

  1. Registre-se em Pinecone.io
  2. Copie sua chave de API do painel
  3. Para criar um novo
    espaço reservado index:Polylang, não modifique

Você verá o índice com status verde e, inicialmente, com zero registros após a conclusão da configuração.

Configuração do índice de pinecone

Criação do pipeline: Implementação passo a passo

Agora que nossos pré-requisitos estão configurados, vamos criar nosso pipeline de dados usando as análises de produtos MacBook Air M1 do Walmart como um exemplo prático.

walmart-macbook-reviews

Etapa 1: Aquisição de dados com o Bright Data Web Unlocker

A base de nosso pipeline envolve a busca de conteúdo HTML bruto de URLs de destino. O Web Unlocker da Bright Data é excelente para contornar as sofisticadas medidas antirrastreamento comumente empregadas por sites de comércio eletrônico como o Walmart.

detecção de robôs no walmart

Vamos começar com essa implementação para buscar o conteúdo da página da Web:

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")

Por que usar Markdown em vez de HTML bruto? Em nosso pipeline, solicitamos conteúdo no formato Markdown(data_format: 'markdown') por vários motivos importantes. O Markdown elimina tags HTML, estilos e outros ruídos, reduzindo a complexidade e deixando apenas o conteúdo essencial. Isso resulta em uma contagem de tokens significativamente menor, tornando o processamento do LLM mais eficiente. Ele também preserva a estrutura semântica em um formato mais limpo e legível, o que aumenta a clareza e a velocidade de processamento. Operações como geração de incorporação e indexação de vetores tornam-se mais rápidas e leves.

Para obter mais contexto sobre por que os agentes de IA modernos favorecem o Markdown, leia Por que os novos agentes de IA estão escolhendo o Markdown em vez do HTML.

Etapa 2: Manipulação da paginação

O Walmart distribui avaliações de produtos em várias páginas. Para capturar conjuntos de dados completos, implemente o tratamento de paginação. Você precisa:

  1. Crie o URL correto da página (?page=1, ?page=2, etc.)
  2. Obter o conteúdo de cada página
  3. Detectar se há uma “próxima página” ou não
  4. Continue até que não haja mais páginas disponíveis

Aqui está um loop de paginação simples que busca conteúdo até que nenhuma referência page=n+1 seja encontrada:

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

Etapa 3: Extração de dados estruturados com o Google Gemini

Com o conteúdo Markdown limpo da etapa anterior, agora usaremos o Google Gemini para extrair informações específicas das avaliações e estruturá-las como JSON. Isso transforma o texto não estruturado em dados organizados que nosso banco de dados vetorial pode indexar com eficiência.

Usaremos o modelo gemini-2.0-flash, que oferece especificações impressionantes para o nosso caso de uso:

  • Contexto de entrada: 1.048.576 tokens
  • Limite de saída: 8.192 tokens
  • Suporte multimodal: Texto, código, imagens, áudio e vídeo

No nosso caso, o texto markdown da página de avaliação do Walmart normalmente contém cerca de 3.000 tokens, bem dentro do limite do modelo. Isso significa que podemos enviar a página inteira de uma vez, sem dividi-la em partes menores.

contagem de tokens

Se os seus documentos excederem a janela de contexto, você precisará implementar estratégias de fragmentação. Mas para páginas da Web comuns, a capacidade do Gemini torna isso desnecessário.

Aqui está um exemplo de função Python que usa o Gemini para extrair avaliações em um formato JSON estruturado:

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", [])
    ]

A engenharia imediata é fundamental ao trabalhar com LLMs. Em nossa implementação, definimos response_mime_type: "application/json" para garantir que o Gemini retorne JSON válido, eliminando a necessidade de análise de texto complexa. O prompt em si foi cuidadosamente projetado para reduzir as alucinações, instruindo o Gemini a confiar apenas no conteúdo fornecido. Ele também impõe um esquema JSON rigoroso para garantir a consistência estrutural, preserva o texto completo da avaliação sem resumir e lida com campos ausentes de forma elegante.

Depois de processar uma página de avaliação do Walmart, você receberá dados estruturados como estes:

[
  {
    "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
]

Para obter um exemplo funcional que combina todas as etapas (busca, processamento e extração), confira a implementação completa no GitHub.

Etapa 4: Geração de embeddings de vetores com transformadores de frases

Com dados de avaliação limpos e estruturados no formato JSON, agora geramos embeddings de vetores semânticos para cada avaliação. Esses embeddings serão usados para tarefas posteriores, como pesquisa semântica ou indexação em um banco de dados vetorial como o Pinecone.

Para capturar o contexto completo de uma avaliação de cliente, combinamos o título e a descrição da avaliação em uma única string antes da incorporação. Isso ajuda o modelo a codificar o sentimento e o assunto de forma mais eficaz.

Aqui está o código de exemplo:

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

O que esse código faz:

  1. Inicialização do modelo: Carrega o modelo all-MiniLM-L6-v2, que retorna 384 embeddings densos e dimensionais.
  2. Preparação da entrada: Combina o título e a descrição de cada revisão em uma única cadeia de caracteres.
  3. Codificação em lote: Usa model.encode() com batching para processamento eficiente
    :Polylang placeholder do not modify
  4. Injeção de incorporação: Anexa cada vetor de volta ao objeto de revisão correspondente sob a chave "embedding".

Observação importante: a Pinecone não oferece suporte a valores nulos em metadados. Se algum campo estiver ausente, você deverá omitir a chave por completo ao fazer o upload para o Pinecone. Não use "N/A" ou cadeias de caracteres vazias, a menos que elas tenham um significado específico em sua lógica de filtragem.

Embora a função de saneamento não seja mostrada aqui (para manter o código legível), a implementação final incluirá a limpeza de metadados antes da ingestão.

Após a geração da incorporação, cada objeto de análise inclui um vetor de 384 dimensões:

{
  "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
}

Com os embeddings gerados, nossas avaliações estão prontas para o armazenamento vetorial no Pinecone.

Etapa 5: Armazenamento de embeddings e metadados no Pinecone

A etapa final do nosso pipeline envolve o upload das avaliações incorporadas para o Pinecone.

Aqui está o código Python para inserir dados no 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)

Cada vetor que você inserir no Pinecone deve incluir:

  • id: Um identificador de cadeia de caracteres exclusivo (obrigatório)
  • valores: O próprio vetor (lista de floats, por exemplo, 384 dimensões)
  • metadados: Pares de valores-chave opcionais para filtragem e contexto (compatível com JSON)

Exemplo de estrutura vetorial:

Quando o upload for concluído, seu índice Pinecone será preenchido com vetores de revisão:

índice de pinecone com registros

Seu conjunto de dados vetoriais pronto para IA agora está armazenado no Pinecone e está pronto para as próximas etapas 🔥

Para obter um exemplo funcional que combina todas as etapas (geração de incorporação, upload do Pinecone), confira a implementação completa no GitHub.

(Opcional, mas recomendado) Utilização do conjunto de dados AI-Ready

Com seus embeddings agora indexados no Pinecone, você pode alimentar aplicativos como a pesquisa semântica e os sistemas RAG. Esta etapa mostra como consultar seu banco de dados de vetores e gerar respostas inteligentes.

Pesquisa semântica

A maneira mais simples de aproveitar seu conjunto de dados vetorizado é por meio da pesquisa semântica. Ao contrário da pesquisa por palavras-chave, a pesquisa semântica permite que os usuários façam consultas em linguagem natural e recuperem conteúdo conceitualmente semelhante, mesmo que não compartilhem as mesmas palavras.

Vamos testar o sistema com consultas em linguagem natural:

queries = [
    "good price for students",
    "lightweight and good for travel",
]

Para a consulta “bom preço para estudantes”, você poderá ver:

#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

Funciona muito bem! As consultas em linguagem natural retornam resultados altamente relevantes.

É assim que a pesquisa semântica funciona:

  1. Incorporação da consulta: A consulta de pesquisa é convertida em um vetor usando o mesmo modelo all-MiniLM-L6-v2 usado para indexação.
  2. Pesquisa de vetores: O Pinecone encontra os vetores mais semelhantes usando a similaridade de cosseno.
  3. Recuperação de metadados: Os resultados incluem tanto as pontuações de similaridade quanto os metadados associados.

Para obter uma implementação funcional completa, consulte: Arquivo Python do cliente de pesquisa semântica.

Além da pesquisa: Geração Aumentada de Recuperação (RAG)

Depois que a pesquisa semântica estiver funcionando, você estará a apenas um passo de criar um sistema RAG com o LLM. O Retrieval Augmented Generation (RAG) permite que seu LLM gere respostas fundamentadas usando contexto externo, como seu conjunto de dados vetorizados.

Fluxo RAG:

  1. O usuário faz uma pergunta (por exemplo, “Este MacBook é bom para estudantes universitários?”).
  2. A pesquisa semântica recupera documentos relevantes do Pinecone.
  3. O contexto recuperado + pergunta é enviado para um LLM como o Google Gemini.
  4. O LLM responde com os fatos do seu conjunto de dados.

Exemplo de respostas 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".

Veja o código completo usado para o RAG e a pesquisa semântica: Implementação do RAG Chatbot.

Próximas etapas

Você construiu com sucesso um pipeline completo para criar conjuntos de dados vetoriais prontos para IA. Veja a seguir como expandir e otimizar sua implementação:

  1. Aquisição de dados em escala: Para necessidades de dados mais extensas, explore a infraestrutura completa de dados da Web pronta para IA da Bright Data para obter acesso ilimitado e compatível a dados da Web otimizados para modelos e agentes de IA.
  2. Faça experiências com modelos de incorporação: Embora o all-MiniLM-L6-v2 seja eficiente, você pode obter melhores resultados para determinados casos de uso mudando para modelos maiores ou multilíngues. Você também pode tentar incorporar APIs do Google Gemini e do OpenAI.
  3. Refine as solicitações de extração: Adapte o prompt do Gemini para diferentes estruturas de sites ou esquemas de dados que você precisa extrair.
  4. Aproveite os recursos avançados do Pinecone: Explore a filtragem, os namespaces, a indexação de metadados e a pesquisa híbrida mergulhando na documentação oficial do Pinecone.
  5. Automatize o pipeline: Integre esse pipeline em um fluxo de trabalho de produção usando ferramentas como Apache Airflow ou Prefect para orquestração, AWS Step Functions ou Google Cloud Workflows para agendamento nativo da nuvem.
  6. Crie um aplicativo com tecnologia de IA: Use os componentes de pesquisa semântica ou RAG para criar ferramentas do mundo real, como chatbots de suporte ao cliente, pesquisa de base de conhecimento e mecanismos de recomendação.

Conclusão

Você construiu com sucesso um pipeline completo e robusto que cria e gerencia conjuntos de dados vetoriais prontos para IA, transformando dados brutos da Web em ativos valiosos para grandes modelos de linguagem. Ao combinar o Bright Data para raspagem escalonável da Web, o Google Gemini para extração estruturada inteligente, o Sentence Transformers para gerar embeddings semânticos e o Pinecone para armazenamento e recuperação de vetores, você preparou efetivamente seus dados personalizados para aprimorar os aplicativos de LLM.

Essa abordagem fundamenta os LLMs em conhecimento de domínio específico, fornecendo soluções baseadas em IA mais precisas, relevantes e valiosas.

Não é necessário cartão de crédito