0Pricing
AI Agents · Lección

Recuperación multivectorial (ColBERT)

Indexe varios vectores por documento —uno por token o fragmento— para obtener coincidencias detalladas.

Recuperación multivectorial (ColBERT) es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Agents, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Agents incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

Un solo vector no basta

El RAG estándar transforma cada fragmento en un único vector. Ese vector promedia todo lo que contiene el fragmento y pierde información detallada.

La recuperación multivectorial almacena MÚLTIPLES vectores por documento y realiza coincidencias más precisas.

La idea de ColBERT

ColBERT (Khattab y Zaharia, 2020) genera un embedding para cada TOKEN del documento y para cada token de la consulta, y después calcula la similitud máxima:

score(q, d) = sum over q_token in q: max over d_token in d: cos(q_token, d_token)

Por qué ColBERT supera al vector único

  • Captura varios aspectos de un documento (un solo vector no puede hacerlo)
  • Gestiona mejor los documentos largos
  • Ofrece una mayor cobertura para términos poco frecuentes

Coste de ColBERT

Almacenar un vector por token en lugar de por fragmento:

  • Si un fragmento tiene 500 tokens, eso supone 500 veces más almacenamiento
  • Cada búsqueda compara muchos más pares

La cuantización y la poda reducen este coste entre 10 y 50 veces, pero sigue siendo elevado.

ColBERTv2

ColBERTv2 añade compresión residual: los tokens se agrupan en centroides y cada token se almacena como (centroid_id, small_residual). El almacenamiento se reduce 50 veces.

Ejecutar ColBERT

La biblioteca RAGatouille lo facilita:

# pip install ragatouille
from ragatouille import RAGPretrainedModel

rag = RAGPretrainedModel.from_pretrained('colbert-ir/colbertv2.0')
rag.index(collection=documents, index_name='my_corpus')

results = rag.search(query='What is the refund policy?', k=5)

La recuperación multivectorial en la práctica

Además de ColBERT, existen otros enfoques multivectoriales:

  • Padre-hijo: genere embeddings de fragmentos pequeños y recupere los documentos padre grandes
  • Resumen + fragmentos: genere embeddings tanto del resumen de un documento como de sus fragmentos individuales
  • Preguntas hipotéticas: genere embeddings de pares de preguntas y respuestas sintetizados a partir de cada documento

Hypothetical Questions Pattern

def index_with_hypos(doc):
    # Generate 5 plausible questions this doc could answer
    questions = llm.invoke(f'Write 5 questions answered by this doc:\n{doc}').content.split('\n')
    for q in questions:
        vector_db.add(embed(q), payload={'doc': doc, 'question': q})
# Now queries that match a stored hypothetical question retrieve the doc.

Parent-Child with LangChain

from langchain.retrievers import ParentDocumentRetriever
from langchain.storage import InMemoryStore

store = InMemoryStore()
retriever = ParentDocumentRetriever(
    vectorstore=child_vectorstore,
    docstore=store,
    child_splitter=child_splitter,    # small
    parent_splitter=parent_splitter   # large
)
retriever.add_documents(documents)
# Indexes small chunks, returns large parents.

Cuándo utilizar ColBERT

  • Búsquedas de alto riesgo (legales, médicas)
  • Documentos largos
  • Cuando puede asumir el coste de almacenamiento

Cuándo omitirlo

  • Corpus pequeños
  • Rutas sensibles a la latencia
  • Proyectos con restricciones de costes

Combinación con BM25

Para obtener la máxima cobertura, combine la recuperación multivectorial con la búsqueda clásica por palabras clave BM25. Utilice Reciprocal Rank Fusion para combinar los resultados.

Compensación de ColBERT

¿Cuál es la principal compensación de utilizar una recuperación multivectorial al estilo de ColBERT?

Resumen

Un vector por fragmento pierde información. ColBERT almacena vectores por token para obtener una mayor precisión. RAGatouille lo facilita. Utilícelo cuando la cobertura sea importante y el coste lo permita.

Preguntas frecuentes

¿La lección «Recuperación multivectorial (ColBERT)» es gratis?

Sí — el texto completo de «Recuperación multivectorial (ColBERT)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Agents, actualiza a CoddyKit PRO. El curso de AI Agents incluye 4 lecciones en total.

¿Qué aprenderé en «Recuperación multivectorial (ColBERT)»?

Indexe varios vectores por documento —uno por token o fragmento— para obtener coincidencias detalladas. Practicas AI Agents con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar AI Agents?

No se requiere experiencia previa. AI Agents en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Recuperación multivectorial (ColBERT)»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de AI Agents?

Sí. Cada lección de AI Agents incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Reordenación con cross-encoders
  2. HyDE: embeddings de documentos hipotéticos
  3. Recuperación multivectorial (ColBERT)
  4. Evaluación de RAG (RAGAS, Recall@K)
← Volver a AI Agents