Embeddings y rerankers de Voyage AI para búsqueda y RAG
Introducción
En el pasado, la IA se utilizaba principalmente para analizar y sugerir información; sin embargo, con la llegada de la IA generativa, ahora podemos generar contenido nuevo y único. Suena genial, pero a veces el contenido puede ser engañoso.
Presentamos RAG (Retrieval Augmented Generation), que optimiza la salida de un modelo de lenguaje grande dado el contexto de la consulta. Zilliz y Voyage AI se han asociado para facilitar la creación de un pipeline RAG, como veremos más adelante en el artículo. Voyage AI proporciona modelos de embedding personalizados específicos de dominio y rerankers para búsqueda. Analizaremos algunos de ellos en este artículo.
Creación de RAG con Zilliz Cloud Pipelines y Voyage Ai.png
Modelos de embedding y Voyage AI
Las computadoras no pueden entender información a partir de datos como texto o imágenes. Usamos modelos de embedding para hacer que las computadoras sean capaces de comprender la semántica detrás de los datos no estructurados. Esta sección cubrirá los conceptos básicos de los modelos de embedding, su utilidad en la IA generativa y por qué RAG es el enfoque predominante para la IA generativa empresarial.
Un breve resumen sobre los modelos de embedding
Los modelos de embedding son modelos de aprendizaje profundo que crean embeddings vectoriales para datos determinados. Estos modelos convierten el texto, la imagen, la voz proporcionados, o cualquier forma de datos no numéricos o incluso numéricos, en una representación vectorial compacta. Esta representación, también conocida como embedding vectorial, mapea la información a un espacio vectorial numérico.
Codificación de datos no estructurados en embeddings vectoriales
Deficiencias de la IA generativa
El uso de la IA generativa a nivel empresarial se está disparando debido a su fascinante capacidad para automatizar tareas engorrosas y producir resultados con un esfuerzo mínimo. Aunque la Gen AI es encomiable al ayudarnos en diversos escenarios, también tiene deficiencias. Los modelos GenAI, como ChatGPT, son modelos genéricos entrenados con millones o billones de entradas de datos de múltiples dominios. Este hecho puede ser problemático a veces. Los modelos son probabilísticos y generan la siguiente palabra en función del contexto proporcionado. Cuando el contexto es limitado o más nuevo para el modelo, comienzan a alucinar. Ahí es donde RAG destaca.
RAG y cómo reduce las alucinaciones
La técnica RAG requiere usar modelos de embedding específicos de dominio para incrustar la consulta proporcionada. Luego, esta consulta se lleva a una base de datos vectorial, donde se aplica la búsqueda semántica para obtener embeddings vectoriales contextuales similares. Todos los documentos relevantes de la base de datos vectorial y la consulta proporcionada se pasan luego al modelo. El modelo utiliza la información adicional y el contexto de la consulta para formular resultados relevantes, actualizados y precisos. De esta manera, la arquitectura RAG reduce cualquier alucinación del modelo y permite un LLM más robusto y fiable.
La arquitectura RAG
Ahora que hemos analizado los modelos de embedding y su papel en RAG, hablemos de algunos modelos de embedding de Voyage AI. Voyage AI proporciona varios modelos de embedding personalizados en muchos dominios para llevar a cabo técnicas RAG efectivas y eficientes. Estos modelos están conectados con bases de datos vectoriales, como Milvus de Zilliz, para almacenar y recuperar embeddings vectoriales relacionados con la consulta generada.
Modelos de embedding de Voyage AI
Voyage AI proporciona muchos modelos de embeddings diferentes, eficientes y efectivos, tanto específicos de dominio como de propósito general. Estos modelos contribuyen significativamente a la búsqueda y a RAG. Proporcionan una mayor calidad de recuperación que la mayoría de los modelos de embeddings.
Entre múltiples modelos de embeddings, los mejores incluyen voyage-code-2, voyage-law-2 y voyage-large-2-instruct. Voyage AI ha desarrollado estos modelos para dominios específicos de código, derecho, finanzas y multilingües. Además, podemos personalizar estos modelos según nuestros casos de uso específicos. Echemos un vistazo a sus modelos más recientes:
- voyage-code-2: Un modelo muy versado en proporcionar códigos relacionados con la consulta con precisión milimétrica. La siguiente figura muestra el rendimiento de voyage-code-2 para la tarea de recuperación de código:
análisis de rendimiento de voyage-code-2.png
- voyage-law-2: Un modelo entrenado para obtener contexto y embeddings para documentos legales. Este modelo proporciona el mejor resultado en relación con documentos legales de contexto largo en distintos dominios y funciona mejor en corpus de propósito general en distintos dominios. Las siguientes figuras destacan el rendimiento de voyage-law-2:
análisis de rendimiento de voyage-law-2
La figura anterior muestra las capacidades de rendimiento de los modelos de embeddings de Voyage AI, que están clasificados en los primeros puestos por el Massive Text Embedding Benchmark (MTEB).
Rerankers y Voyage AI
Hemos analizado cómo RAG mejora la calidad de la salida de GenAI al reducir las alucinaciones de dichos modelos. Sin embargo, todavía existe un pequeño problema relacionado con la ventana de contexto de los modelos GenAI. La ventana de contexto se refiere a la cantidad máxima de información que el modelo de IA puede tomar en un momento dado para su procesamiento. Una ventana más pequeña significa que el modelo recibe menos información; una más grande implica un mayor coste y tiempo de procesamiento.
Un reranker clasifica los documentos obtenidos de las bases de datos vectoriales para obtener resultados óptimos calculando su puntuación de relevancia con la consulta proporcionada. La clasificación ayuda a filtrar los documentos más relevantes (informativos) para que encajen dentro de la ventana de contexto y generen los resultados más precisos.
Mientras que las técnicas RAG obtienen embeddings vectoriales para proporcionar información contextual y ayudar en las búsquedas, estos modelos vuelven a clasificar todos esos embeddings obtenidos utilizando una puntuación de relevancia para proporcionar los datos más relevantes a los LLMs.
Arquitectura simple de Reranker
Rerankers de Voyage AI
Voyage AI ha desarrollado un modelo reranker conocido como rerank-lite-1. Este modelo de voyage es un reranker generalista optimizado para latencia y calidad. Tiene una ventana de contexto de 4000 tokens. La siguiente figura muestra el rendimiento de este modelo.
análisis de rendimiento de voyage:ranke-lite-1
Usar Voyage Embeddings en Zilliz Cloud Pipelines
Zilliz y Voyage AI se han asociado para agilizar la conversión de datos no estructurados en embeddings vectoriales buscables en Zilliz Cloud.
Esta sección mostrará cómo integrar Zilliz Cloud y los modelos de embeddings de Voyage AI para una generación y recuperación de embeddings optimizadas. También te mostraremos cómo usar esta integración y Cohere (el LLM) para construir una aplicación RAG. Empecemos.
Configurar Zilliz Cloud
El primer paso es configurar Zilliz Cloud. Si aún no tienes una cuenta de Zilliz Cloud, regístrate gratis.
Al iniciar sesión por primera vez, se mostrará la siguiente consola en la pantalla.
consola de Zilliz cloud para crear un clúster
- Crearemos un clúster según sea necesario. Zilliz proporciona un nivel gratuito para aprender, experimentar y crear prototipos, que luego puede migrarse a diferentes planes de producción.
Creating a new Cluster in Zilliz.png
- Después de crear el nuevo clúster, se mostrará toda la información necesaria para conectarse.
Connection to the cluster
El ID del proyecto se puede recuperar desde Projects en la barra de menú superior. Localiza el proyecto objetivo y copia su ID en la columna Project ID.
Projects Dashboard for Project ID
- Ahora tenemos todos los ingredientes necesarios para nuestra conexión al clúster. Es hora de construir nuestras canalizaciones. Usaremos Cohere como el LLM para la aplicación RAG. Para ello, instalaremos
cohere.
%pip install cohere
Aquí están las importaciones que necesitamos para este notebook.
import os
import requests
En el código siguiente, hemos configurado nuestro CLOUD_REGION, CLUSTER_ID, API_KEY y PROJECT_ID:
CLOUD_REGION = 'gcp-us-west1'
CLUSTER_ID = 'your CLUSTER_ID'
API_KEY = 'your API_KEY'
PROJECT_ID = 'your PROJECT_ID'
Canalizaciones de Zilliz Cloud
Las canalizaciones de Zilliz Cloud convierten datos no estructurados en una colección de vectores con capacidad de búsqueda, gestionando los procesos de embedding, ingesta, búsqueda y eliminación. Zilliz Cloud ofrece tres tipos de canalizaciones:
- Canalización de ingesta: Convierte datos no estructurados en embeddings vectoriales con capacidad de búsqueda y los almacena en Zilliz Cloud Vector Databases. Incluye varias funciones para transformar campos de entrada y preservar información adicional para la recuperación.
Canalización de búsqueda: Esta canalización permite la búsqueda semántica al convertir una cadena de consulta en un embedding vectorial y recuperar los Top-K vectores similares junto con su texto y metadatos correspondientes. Permite solo un tipo de función.
Canalización de eliminación: Elimina entidades especificadas de una colección, permitiendo solo un tipo de función.
Canalización de ingesta
En la canalización de ingesta, puedes especificar funciones para personalizar su comportamiento según los datos de entrada. Actualmente, admite cuatro funciones:
INDEX_DOC: Toma un documento como entrada, lo divide en fragmentos y genera un embedding vectorial para cada fragmento. Asigna un campo de entrada a cuatro campos de salida (doc_name, chunk_id, chunk_text y embedding) en la colección.PRESERVE: Almacena la entrada definida por el usuario como un campo escalar adicional en la colección, generalmente usado para metainformación como información del editor y etiquetas.INDEX_TEXT: Procesa textos convirtiendo cada texto en un embedding vectorial y asignando un campo de entrada (text_list) a dos campos de salida (text y embedding).INDEX_IMAGE: Procesa imágenes generando un embedding de imagen, asignando dos campos de entrada (image_url e image_id) a dos campos de salida (image_id y embedding).
En el fragmento de código siguiente, usaremos la biblioteca requests para enviar la solicitud a Zilliz Cloud. Una solicitud post comprende URL, encabezados y datos para enviar. Creemos nuestro encabezado:
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": f"Bearer {API_KEY}"
}
Definiremos nuestro collection_name y embedding_service en el código siguiente. El servicio de embedding utilizará modelos de Voyage AI, específicamente voyage-2, que han mostrado un rendimiento excepcional en tareas de recuperación, documentación técnica y aplicaciones generales.
create_pipeline_url = f"https://controller.api.{CLOUD_REGION}.zillizcloud.com/v1/pipelines"
collection_name = 'Documents'
embedding_service = "voyageai/voyage-large-2"
En el fragmento de código siguiente, definiremos la función de índice para nuestra ingestion_pipeline:
data = {
"name": "ingestion_pipeline",
"description": "Una canalización que genera embeddings de texto y almacena información del título.",
"type": "INGESTION",
"projectId": PROJECT_ID,
"clusterId": CLUSTER_ID,
"collectionName": collection_name,
"functions": [
{
"name": "index_doc",
"action": "INDEX_DOC",
"language": "ENGLISH",
"embedding": embedding_service
}
]
}
response = requests.post(create_pipeline_url, headers=headers, json=data)
print(response.json())
El pipelineId se usará más adelante para ingerir los datos en la base de datos. Después de este paso, podemos ver nuestra colección creada en el clúster, así como nuestra canalización de ingesta:
ingestion_pipe_id = response.json()["data"]["pipelineId"]
print(ingestion_pipe_id)
>> pipe-cf…
Aquí está la colección creada en la nube:
Colección creada en la nube
Y nuestra canalización de ingesta se ve así:
Canalización de ingesta en Zilliz Cloud
Canalización de búsqueda
Las canalizaciones de búsqueda facilitan la búsqueda semántica al convertir una cadena de consulta en un embedding vectorial y recuperar los vectores vecinos más cercanos Top-K. La canalización de búsqueda cuenta con la función SEARCH_DOC_CHUNK, que requiere la especificación del clúster y la colección desde la cual buscar.
Zilliz admite muchas funciones. Aquí, usaremos SEARCH_DOC_CHUNK, que toma como entrada una consulta de usuario y devuelve fragmentos de documentos relevantes de la base de conocimientos.
data = {
"projectId": PROJECT_ID,
"name": "search_pipeline",
"description": "Una canalización que recibe texto y busca fragmentos de documentos semánticamente similares",
"type": "SEARCH",
"functions": [
{
"name": "search_chunk_text",
"action": "SEARCH_DOC_CHUNK",
"inputField": "query_text",
"clusterId": f"{CLUSTER_ID}",
"collectionName": f"{collection_name}",
"embedding": embedding_service
}
]
}
response = requests.post(create_pipeline_url, headers=headers, json=data)
search_pipe_id = response.json()["data"]["pipelineId"]
Hemos creado nuestras canalizaciones de ingesta y búsqueda. Es hora de insertar este artículo en nuestra canalización de ingesta y ejecutar nuestra canalización de búsqueda.
Ejecutar la canalización de ingesta
La canalización de ingesta puede recibir archivos de servicios de almacenamiento de objetos como AWS S3 o Google Cloud Storage (GCS). Los formatos de archivo aceptados incluyen .txt, .pdf, .md, .html, etc. Podemos ejecutar la canalización de ingesta desde la consola de Zilliz. Hagámoslo paso a paso.
1. Ve a Pipelines desde la izquierda y navega a ingestion_pipeline como se muestra a continuación:
Canalización de ingesta creada en la nube
2. Después de hacer clic en Run, se nos dirigirá a la siguiente página:
Adjuntar archivo en la canalización de ingesta
Adjunta el archivo de texto y ejecuta la canalización. Tras completarse correctamente, el archivo de texto se cargará en la colección. Aquí está la vista previa de los datos:
Vista previa de datos de la colección
Ejecutar la canalización de búsqueda
RAG (generación aumentada por recuperación) tiene dos componentes principales: el recuperador y el LLM. Crear un recuperador es tan simple como ejecutar la canalización de búsqueda. La canalización de búsqueda recibe la consulta y recupera el fragmento más relevante de la base de datos. En el código siguiente, la función retriever recibe la query y topk (el número de documentos a seleccionar) y ejecuta la canalización de búsqueda.
def retriver(question, topk):
run_pipeline_url = f"https://controller.api.{CLOUD_REGION}.zillizcloud.com/v1/pipelines/{search_pipe_id}/run"
data = {
"data": {
"query_text": question
},
"params": {
"limit": topk,
"offset": 0,
"outputFields": [
"chunk_text",
"id",
"doc_name"
],
}
}
response = requests.post(run_pipeline_url, headers=headers, json=data)
return [result['chunk_text'] for result in response.json()['data']['result']]
Aplicación RAG usando Cohere como LLM
Después de recuperar los documentos, usaremos Cohere como nuestro LLM. Proporcionaremos los documentos recuperados a la API de chat de Cohere envueltos en un prompt y haremos preguntas sobre ellos.
import cohere
co = cohere.Client(api_key="your_api_key")
def chatbot(query, topk):
chunks = retriver(query, topk)
response = co.chat(
model="command-r-plus",
message= f"Given this information: '{[chunk for chunk in chunks]}', generate a response for the following {query}"
)
return response.text
question = "I'm looking for a good model for legal retrieving tasks?"
print(chatbot(question, 2))
Aquí está la respuesta del chatbot:
Según la información proporcionada, parece que estás específicamente interesado en un modelo competente en tareas de recuperación legal. En ese caso, el modelo que mejor se adapta a tus necesidades es "voyage-law-2."
Conclusión
Voyage AI proporciona modelos de embedding y rerankers personalizados específicos de dominio para búsqueda avanzada. Zilliz Cloud Pipelines integra sin problemas los modelos de Voyage AI con Zilliz Cloud, haciendo que el desarrollo de RAG sea mucho más optimizado.
Este artículo analizó los populares modelos de embedding y rerankers de Voyage AI y su integración con Zilliz Cloud. También demostramos cómo construir un RAG con Voyage AI, Zilliz Cloud Pipeline y Cohere.
Para obtener más detalles, mira la repetición de la charla de Tengyu Ma en el Unstructured Data Meetup by Zilliz.
Sigue leyendo

Introducing Zilliz CLI and Agent Skills for Zilliz Cloud
Manage your vector database from your terminal or AI coding agent. Zilliz CLI and Agent Skills work with Claude Code, Cursor, Codex, and Copilot.

Announcing VDBBench 1.0: Open-Source VectorDB Benchmarking with Your Real-World Production Workloads
Discover VDBBench 1.0, an open-source tool for benchmarking vector databases with real-world production data, streaming ingestion, and concurrent workloads.

Democratizing AI: Making Vector Search Powerful and Affordable
Zilliz democratizes AI vector search with Milvus 2.6 and Zilliz Cloud for powerful, affordable scalability, cutting costs in infrastructure, operations, and development.



