0Pricing
AI Agents · Lección

Filtrado de metadatos para búsqueda híbrida

Combine la similitud vectorial con filtros estructurados —fecha, autor o etiqueta— para obtener una recuperación precisa y contextual.

Filtrado de metadatos para búsqueda híbrida es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 2 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.

¿Por qué filtrar?

La búsqueda vectorial pura devuelve los K fragmentos más similares, aunque pertenezcan al inquilino, idioma o documento equivocados.

Los filtros de metadatos restringen la búsqueda a subconjuntos relevantes, lo que le proporciona precisión Y recall.

Almacenamiento de metadatos

Asocie un diccionario de metadatos a cada fragmento durante la ingesta:

metadata = {
    'tenant_id': 'acme',
    'language': 'en',
    'source': 'help-docs',
    'updated_at': '2024-08-12',
    'tags': ['shipping', 'returns']
}
for k, v in metadata.items():
    print(f"{k}: {v}")

Filtering in Pinecone

results = index.query(
    vector=query_vec,
    top_k=5,
    filter={
        'tenant_id': 'acme',
        'language': 'en'
    }
)

Filtros de rango

La mayoría de las bases de datos vectoriales también admiten filtros de rango:

filter = {
    'updated_at': {'$gte': '2024-01-01'},
    'score': {'$gt': 0.5}
}
print(filter)

In and Not-In

filter = {
    'tags': {'$in': ['shipping', 'returns']},
    'archived': {'$ne': True}
}
print(filter)

Filtrado en Qdrant

Qdrant cuenta con un lenguaje de filtrado completo:

from qdrant_client.models import Filter, FieldCondition, MatchValue

filter = Filter(must=[
    FieldCondition(key='tenant_id', match=MatchValue(value='acme')),
    FieldCondition(key='language', match=MatchValue(value='en'))
])

results = client.search(
    collection_name='docs',
    query_vector=query_vec,
    query_filter=filter,
    limit=5
)

Prefiltrado frente a posfiltrado

Hay dos estrategias:

  • Prefiltrado — aplicar el filtro Y DESPUÉS buscar (correcto, pero puede ser lento sin metadatos indexados)
  • Posfiltrado — buscar y después descartar lo que no coincida (rápido, pero puede no devolver ningún resultado)

Los sistemas de producción prefiltran con índices de metadatos adecuados.

Vectorial híbrida + palabras clave

Combine la búsqueda semántica con la búsqueda clásica por palabras clave BM25. Ejecute ambas y combine las puntuaciones (la fusión de rangos recíprocos es el estándar):

def rrf(vec_results, bm25_results, k=60):
    scores = defaultdict(float)
    for rank, doc in enumerate(vec_results):
        scores[doc.id] += 1 / (k + rank)
    for rank, doc in enumerate(bm25_results):
        scores[doc.id] += 1 / (k + rank)
    return sorted(scores.items(), key=lambda x: -x[1])

Multitenencia

En SaaS, TODA consulta debe filtrarse por tenant_id. Inclúyalo de forma fija en su envoltorio de recuperación para que no pueda olvidarse:

def search(query, tenant_id, top_k=5):
    return index.query(
        vector=embed(query),
        top_k=top_k,
        filter={'tenant_id': tenant_id}
    )

Control de acceso mediante metadatos

Almacene los permisos de usuario y de rol en los metadatos:

metadata = {
    'visibility': 'public',         # or 'internal', 'restricted'
    'department': 'engineering',
    'allowed_roles': ['engineer', 'manager']
}

# At query time:
filter = {'allowed_roles': {'$contains': current_user_role}}

Impulso por recencia

Para dar preferencia a los documentos más recientes, recupere más candidatos y vuelva a puntuarlos según su recencia:

candidates = index.query(vector=query_vec, top_k=50)
scored = [
    (c.score * recency_factor(c.metadata['updated_at']), c)
    for c in candidates
]
scored.sort(reverse=True)
final = scored[:5]

Vigile la cardinalidad de los metadatos

Los metadatos de alta cardinalidad (millones de valores únicos) generan índices enormes. Preagregue cuando sea posible; por ejemplo, almacene año y mes en lugar de la marca de tiempo completa para filtrar por fechas.

Filtro siempre activo

¿Qué filtro debe incluir SIEMPRE todo agente multi-tenant?

Resumen

Los filtros de metadatos delimitan la búsqueda. Combínelos con una búsqueda híbrida (vectorial + BM25) para obtener los mejores resultados. La multitenencia y el control de acceso dependen de ello.

Preguntas frecuentes

¿La lección «Filtrado de metadatos para búsqueda híbrida» es gratis?

Sí — el texto completo de «Filtrado de metadatos para búsqueda híbrida» 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 «Filtrado de metadatos para búsqueda híbrida»?

Combine la similitud vectorial con filtros estructurados —fecha, autor o etiqueta— para obtener una recuperación precisa y contextual. 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 2 de 4.

¿Cuánto tiempo toma la lección «Filtrado de metadatos para búsqueda híbrida»?

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. Pinecone, Weaviate y Qdrant: comparación
  2. Filtrado de metadatos para búsqueda híbrida
  3. Actualizar y eliminar vectores
  4. Elegir métricas de distancia (coseno, L2 y producto escalar)
← Volver a AI Agents