Noticias
Modelos
API
keyboard_arrow_down
Lector
Lea las URL y busque en la web para obtener una base más sólida para su LLM.
Incrustaciones
Integraciones multilingües y multimodales de clase mundial.
reclasificador
Recuperador neuronal de clase mundial para maximizar la relevancia de la búsqueda.
MCP terminalCLIarticlellms.txtsmart_toyAgentesdata_objectEsquemamenu_bookDocumentos



Acceso
login
Descripción general de Milvus Lite, Jina Embeddings y Jina Reranker
Milvus y modelos de Jina AI en acción
Resumen
Usa los Modelos de Jina AI y Milvus Ahora
Blog de tecnología
junio 03, 2024

Implementación de un Chat History RAG con Jina AI y Milvus Lite

Mejora tus aplicaciones de búsqueda en Python con Jina Embeddings y Reranker y Milvus Lite, ligero y fácil de implementar.
Black background with vivid geometric shapes on the sides and central logos "Embeddings," "Reranker," and "Milvus."
Francesco Kruk
Saahil Ognawala
Francesco Kruk, Saahil Ognawala • 6 minutos de lectura

Los desarrolladores e ingenieros de operaciones valoran mucho la infraestructura que pueden configurar fácilmente, iniciar rápidamente y, posteriormente, implementar de manera eficiente en un entorno de producción escalado sin complicaciones adicionales. Por esta razón, Milvus Lite, la última base de datos vectorial ligera de nuestro socio Milvus, es una herramienta importante para que los desarrolladores de Python desarrollen rápidamente aplicaciones de búsqueda, especialmente cuando se usa junto con modelos base de búsqueda de alta calidad y fáciles de usar.

En este artículo, describiremos cómo Milvus Lite integra Jina Embeddings v2 y Jina Reranker v1 usando el ejemplo de una aplicación de Retrieval Augmented Generation (RAG) construida sobre los chats de canales públicos internos de una empresa ficticia para permitir que los empleados obtengan respuestas a sus preguntas relacionadas con la organización de manera precisa y útil.

tagDescripción general de Milvus Lite, Jina Embeddings y Jina Reranker

Milvus Lite es una nueva versión ligera de la base de datos vectorial líder Milvus, que ahora también se ofrece como una biblioteca de Python. Milvus Lite comparte la misma API que Milvus implementada en Docker o Kubernetes pero puede instalarse fácilmente mediante un comando pip de una línea, sin necesidad de configurar un servidor.

Con la integración de Jina Embeddings v2 y Jina Reranker v1 en pymilvus, el SDK de Python de Milvus, ahora tienes la opción de incrustar documentos directamente usando el mismo cliente de Python para cualquier modo de implementación de Milvus, incluido Milvus Lite. Puedes encontrar detalles de la integración de Jina Embeddings y Reranker en las páginas de documentación de pymilvus.

Con su ventana de contexto de 8k tokens y capacidades multilingües, Jina Embeddings v2 codifica la semántica amplia del texto y asegura una recuperación precisa. Al agregar Jina Reranker v1 al pipeline, puedes refinar aún más tus resultados mediante la codificación cruzada de los resultados recuperados directamente con la consulta para una comprensión contextual más profunda.

tagMilvus y modelos de Jina AI en acción

Este tutorial se centrará en un caso de uso práctico: Consultar el historial de chat de Slack de una empresa para responder una amplia gama de preguntas basadas en conversaciones anteriores.

Diagrama de flujo que detalla el proceso de entrenamiento del modelo de la comunidad Rust, con pasos desde la consulta "¿Siguiente paso de entrenamiento?"
Flujo del proceso para consultar los datos de Slack usando un ejemplo de consulta

Por ejemplo, un empleado podría preguntar sobre el siguiente paso en algún proceso de entrenamiento de IA, como en el esquema del proceso anterior. Usando Jina Embeddings, Jina Reranker y Milvus, podemos identificar con precisión la información relevante en los mensajes de Slack registrados. Esta aplicación puede mejorar la productividad en el lugar de trabajo facilitando el acceso a información valiosa de comunicaciones anteriores.

Para generar las respuestas, usaremos Mixtral 7B Instruct a través de la integración de HuggingFace en Langchain. Para usar el modelo, necesitas un token de acceso de HuggingFace que puedes generar como se describe aquí.

Puedes seguir el tutorial en Colab o descargando el notebook.

Google Colab

tagSobre el conjunto de datos

El conjunto de datos utilizado en este tutorial fue generado usando GPT-4 y está destinado a replicar los historiales de chat de los canales de Slack de Blueprint AI. Blueprint es una startup de IA ficticia que desarrolla sus propios modelos fundamentales. Puedes descargar el conjunto de datos aquí.

Los datos están organizados en canales, cada uno representativo de una colección de hilos de Slack relacionados. Cada canal tiene una etiqueta de tema, una de diez opciones de tema: distribución de modelos, entrenamiento de modelos, ajuste fino de modelos, ética y mitigación de sesgos, retroalimentación de usuarios, ventas, marketing, incorporación de modelos, diseño creativo y gestión de productos. Un participante es conocido como el "usuario experto". Puedes usar este campo para validar los resultados de la búsqueda del usuario más experto en un tema, lo cual te mostraremos cómo hacer más adelante.

Cada canal también contiene un historial de chat con hilos de conversación de hasta 100 mensajes por canal. Cada mensaje en el conjunto de datos contiene la siguiente información:

  • El usuario que envió el mensaje
  • El texto del mensaje enviado por el usuario
  • La marca de tiempo del mensaje
  • El nombre del archivo que el usuario pudo haber adjuntado al mensaje
  • El ID del mensaje
  • El ID del mensaje padre si el mensaje estaba dentro de un hilo originado de otro mensaje
Diagrama que muestra la estructura de un sistema de mensajería, detallando la relación entre las entidades 'Canal' y 'Mensaje'
Un diagrama UML de la estructura de los datos del chat.

tagConfigurar el entorno

Para comenzar, instala todos los componentes necesarios:

pip install -U pymilvus
pip install -U "pymilvus[model]"
pip install langchain
pip install langchain-community

Descarga el conjunto de datos:

import os

if not os.path.exists("chat_history.json"):
    !wget https://raw.githubusercontent.com/jina-ai/workshops/main/notebooks/embeddings/milvus/chat_history.json

Establece tu clave API de Jina AI en una variable de entorno. Puedes generar una aquí.

import os
import getpass

os.environ["JINAAI_API_KEY"] = getpass.getpass(prompt="Jina AI API Key: ")

Haz lo mismo con tu Token de Hugging Face. Puedes encontrar cómo generar uno aquí. Asegúrate de que esté configurado como READ para acceder al Hugging Face Hub.

os.environ["HUGGINGFACEHUB_API_TOKEN"] = getpass.getpass(prompt="Hugging Face Token: ")

tagCrear la Colección de Milvus

Crea la Colección de Milvus para indexar los datos:

from pymilvus import MilvusClient, DataType

# Especifique un nombre de archivo local como parámetro uri de MilvusClient para usar Milvus Lite
client = MilvusClient("milvus_jina.db")

schema = MilvusClient.create_schema(
    auto_id=True,
    enable_dynamic_field=True,
)

schema.add_field(field_name="id", datatype=DataType.INT64, description="The Primary Key", is_primary=True)
schema.add_field(field_name="embedding", datatype=DataType.FLOAT_VECTOR, description="The Embedding Vector", dim=768)

index_params = client.prepare_index_params()
index_params.add_index(field_name="embedding", metric_type="COSINE", index_type="AUTOINDEX")

client.create_collection(collection_name="milvus_jina", schema=schema, index_params=index_params)

tagPreparar los Datos

Analizar el historial de chat y extraer los metadatos:

import json

with open("chat_history.json", "r", encoding="utf-8") as file:
    chat_data = json.load(file)

messages = []
metadatas = []

for channel in chat_data:
  chat_history = channel["chat_history"]
  chat_topic = channel["topic"]
  chat_expert = channel["expert_user"]
  for message in chat_history:
    text = f"""{message["user"]}: {message["message"]}"""
    messages.append(text)
    meta = {
        "time_stamp": message["time_stamp"],
        "file_name": message["file_name"],
        "parent_message_nr": message["parent_message_nr"],
        "channel": chat_topic,
        "expert": True if message["user"] == chat_expert else False
    }
    metadatas.append(meta)

tagEmbeber los Datos del Chat

Crear embeddings para cada mensaje usando Jina Embeddings v2 para recuperar información relevante del chat:

from pymilvus.model.dense import JinaEmbeddingFunction

jina_ef = JinaEmbeddingFunction("jina-embeddings-v2-base-en")

embeddings = jina_ef.encode_documents(messages)

tagIndexar los Datos del Chat

Indexar los mensajes, sus embeddings y los metadatos relacionados:

collection_data = [{
    "message": message,
    "embedding": embedding,
    "metadata": metadata
} for message, embedding, metadata in zip(messages, embeddings, metadatas)]

data = client.insert(
    collection_name="milvus_jina",
    data=collection_data
)

tagConsultar el Historial del Chat

Es momento de hacer una pregunta:

query = "Who knows the most about encryption protocols in my team?"

Ahora embebemos la consulta y recuperamos los mensajes relevantes. Aquí recuperamos los cinco mensajes más relevantes y los reordenamos usando Jina Reranker v1:

from pymilvus.model.reranker import JinaRerankFunction

query_vectors = jina_ef.encode_queries([query])

results = client.search(
    collection_name="milvus_jina",
    data=query_vectors,
    limit=5,
)

results = results[0]

ids = [results[i]["id"] for i in range(len(results))]

results = client.get(
    collection_name="milvus_jina",
    ids=ids,
    output_fields=["id", "message", "metadata"]
)

jina_rf = JinaRerankFunction("jina-reranker-v1-base-en")

documents = [results[i]["message"] for i in range(len(results))]
reranked_documents = jina_rf(query, documents)

reranked_messages = []
for reranked_document in reranked_documents:
  idx = reranked_document.index
  reranked_messages.append(results[idx])

Por último, generamos una respuesta a la consulta usando Mixtral 7B Instruct y los mensajes reordenados como contexto:

from langchain.prompts import PromptTemplate
from langchain_community.llms import HuggingFaceEndpoint

llm = HuggingFaceEndpoint(repo_id="mistralai/Mixtral-8x7B-Instruct-v0.1")

prompt = """<s>[INST] Context information is below.\\n
        It includes the five most relevant messages to the query, sorted based on their relevance to the query.\\n
        ---------------------\\n
        {context_str}\\\\n
        ---------------------\\n
        Given the context information and not prior knowledge,
        answer the query. Please be brief, concise, and complete.\\n
        If the context information does not contain an answer to the query,
        respond with \\"No information\\".\\n
        Query: {query_str}[/INST] </s>"""

prompt = PromptTemplate(template=prompt, input_variables=["query_str", "context_str"])

llm_chain = prompt | llm

answer = llm_chain.invoke({"query_str":query, "context_str":reranked_messages})

print(f"\n\nANSWER:\n\n{answer}")

La respuesta a nuestra pregunta es:

"Basado en la información del contexto, User5 parece ser el más conocedor sobre protocolos de encriptación en tu equipo. Han mencionado que los nuevos protocolos mejoran significativamente la seguridad de los datos, especialmente para implementaciones en la nube."

Si lees los mensajes en chat_history.json, puedes verificar por ti mismo si User5 es el usuario más experto.

tagResumen

Hemos visto cómo configurar Milvus Lite, embeber datos de chat usando Jina Embeddings v2, y refinar los resultados de búsqueda con Jina Reranker v1, todo dentro de un caso de uso práctico de búsqueda en un historial de chat de Slack. Milvus Lite simplifica el desarrollo de aplicaciones basadas en Python sin necesidad de configuraciones complejas de servidor. Su integración con Jina Embeddings y Reranker busca aumentar la productividad al facilitar el acceso a información valiosa de tu lugar de trabajo.

tagUsa los Modelos de Jina AI y Milvus Ahora

Milvus Lite con Jina Embeddings y Reranker integrados te proporciona un pipeline de procesamiento completo, listo para usar con solo unas pocas líneas de código.

Nos encantaría conocer tus casos de uso y hablar sobre cómo la extensión Jina AI Milvus puede adaptarse a las necesidades de tu negocio. Contáctanos a través de nuestro sitio web o nuestro canal de Discord para compartir tus comentarios y mantenerte al día con nuestros últimos modelos. Para preguntas sobre la integración de Milvus y Jina AI, únete a la comunidad Milvus.

Categorías:
Blog de tecnología
rss_feed

Leer más
marzo 11, 2026 • 7 minutos de lectura
Generación de embeddings de audio a partir de LLM multimodales
Han Xiao
Abstract illustration of a sound wave or heartbeat, formed by blue, orange, and gray dots on a white background.
marzo 06, 2026 • 6 minutos de lectura
Identificación de modelos de embeddings a partir de valores numéricos brutos
Han Xiao
Fingerprint illustration made from numbers, showcasing digital and high-tech design on a light background.
septiembre 09, 2025 • 11 minutos de lectura
Vectores multimodales en Llama.cpp y GGUF
Andrei Ungureanu
Alex C-G
Cartoon llama in the center of a white background, emitting laser-like beams from its eyes. The illustration creates a playfu
Oficinas
location_on
Sunnyvale, California
710 Lakeway Dr, Ste 200, Sunnyvale, CA 94085, EE. UU.
location_on
Berlín, Alemania
Prinzessinnenstraße 19-20, 10969 Berlín, Alemania
Fundación de búsqueda
Lector
Incrustaciones
reclasificador
Obtener la clave API de Jina
Límite de velocidad
Estado de la API
Compañía
Sobre nosotros
Contactar con ventas
Sala de prensa
Programa de prácticas
Descargar el logotipo de Jina
open_in_new
Descargar el logotipo de Elastic
open_in_new
Términos
Seguridad
Términos y condiciones
Privacidad
Administrar cookies
email
Jina AI de Elastic © 2020-2026.