Pular para o conteúdo principal

Capítulo 2: Modelos de Embedding

Introdução​

Escolher o modelo de embedding correto é fundamental para o desempenho do RAG. Este capítulo apresenta os principais provedores de embedding e seus modelos.

Embeddings da OpenAI​

text-embedding-3-small​

from openai import OpenAI

client = OpenAI()

response = client.embeddings.create(
input="What is RAG?",
model="text-embedding-3-small"
)

embedding = response.data[0].embedding # 1536 dimensions
EspecificaçãoValor
Dimensões1536
Máx. tokens8191
Preço$0.02 / 1M tokens
QualidadeBoa

text-embedding-3-large​

response = client.embeddings.create(
input="What is RAG?",
model="text-embedding-3-large",
dimensions=3072 # Can reduce: 256, 1024, etc.
)
EspecificaçãoValor
Dimensões3072 (configurável)
Máx. tokens8191
Preço$0.13 / 1M tokens
QualidadeExcelente

Redução de Dimensionalidade​

# Reduce dimensions for efficiency
response = client.embeddings.create(
input="What is RAG?",
model="text-embedding-3-large",
dimensions=1024 # Reduced from 3072
)
# Still maintains good quality!

Embeddings da Cohere​

embed-v3​

import cohere

co = cohere.Client("your-api-key")

response = co.embed(
texts=["What is RAG?"],
model="embed-english-v3.0",
input_type="search_document" # or "search_query"
)

embeddings = response.embeddings

Principais características:

  • Modos diferentes para documentos e queries
  • Opções de compressão
  • Suporte multilíngue
EspecificaçãoValor
Dimensões1024
Máx. tokens512
Preço$0.10 / 1M tokens
QualidadeExcelente

Tipos de Entrada​

# For indexing documents
doc_embeddings = co.embed(
texts=documents,
model="embed-english-v3.0",
input_type="search_document"
)

# For search queries
query_embedding = co.embed(
texts=[query],
model="embed-english-v3.0",
input_type="search_query"
)

Modelos Open Source​

Sentence Transformers​

from sentence_transformers import SentenceTransformer

# Load model
model = SentenceTransformer('all-MiniLM-L6-v2')

# Generate embeddings
embeddings = model.encode([
"What is RAG?",
"Retrieval Augmented Generation explained"
])

Modelos populares:

ModeloDimensõesQualidadeVelocidade
all-MiniLM-L6-v2384BoaRápida
all-mpnet-base-v2768MelhorMédia
multi-qa-mpnet-base768Melhor para Q&AMédia

Modelos BGE (BAAI)​

from sentence_transformers import SentenceTransformer

# BGE models
model = SentenceTransformer('BAAI/bge-large-en-v1.5')

# With instruction prefix (recommended)
queries = ["Represent this sentence for searching: What is RAG?"]
docs = ["Represent this document for retrieval: RAG combines..."]

query_emb = model.encode(queries)
doc_emb = model.encode(docs)
ModeloDimensõesPontuação MTEB
bge-small-en-v1.538462.17
bge-base-en-v1.576863.55
bge-large-en-v1.5102464.23

Modelos E5 (Microsoft)​

from sentence_transformers import SentenceTransformer

model = SentenceTransformer('intfloat/e5-large-v2')

# Requires prefixes
queries = ["query: What is RAG?"]
passages = ["passage: RAG is a technique..."]

Uso com LangChain​

# OpenAI
from langchain.embeddings import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")

# Cohere
from langchain.embeddings import CohereEmbeddings
embeddings = CohereEmbeddings(model="embed-english-v3.0")

# HuggingFace
from langchain.embeddings import HuggingFaceEmbeddings
embeddings = HuggingFaceEmbeddings(
model_name="BAAI/bge-large-en-v1.5"
)

# Use with vector store
vectorstore = Chroma.from_documents(
documents=chunks,
embedding=embeddings
)

Tabela Comparativa​

ModeloProvedorDimensõesPreço/1MQualidadeVelocidade
text-embedding-3-smallOpenAI1536$0.02BoaRápida
text-embedding-3-largeOpenAI3072$0.13ExcelenteMédia
embed-v3Cohere1024$0.10ExcelenteRápida
bge-large-en-v1.5BAAI1024GratuitoExcelenteSelf-host
all-MiniLM-L6-v2SBERT384GratuitoBoaMuito rápida

Resumo​

  • OpenAI – Melhor para a maioria dos casos, API fácil de usar
  • Cohere – Qualidade excelente, otimizado para busca
  • BGE/E5 – Melhor open source, auto-hospedado
  • MiniLM – Rápido e leve, qualidade suficiente

Próximos Passos​

Continue para Capítulo 3: Escolhendo Modelos para orientações de decisão.