Elastic
Jina AI
Modelli
API
keyboard_arrow_down
Lettore
Leggi gli URL e cerca sul web per ottenere LLM più approfonditi.
Incorporamenti
Incorporamenti multimodali multilingue.
Riclassificazione
Strumento di riordinamento per massimizzare la pertinenza dei risultati di ricerca.
Elastic Inference Service
Esegui i modelli Jina in modo nativo all'interno di Elasticsearch.
MCP
terminal
CLI
article
llms.txt
smart_toy
Agenti
data_object
Schema
menu_book
Documenti
Login
login
Panoramica di Milvus Lite, Jina Embeddings e Jina Reranker
Milvus e Modelli Jina AI in Azione
Riepilogo
Usa ora i modelli Jina AI e Milvus
Blog tecnico
giugno 03, 2024

Implementazione di una Chat History RAG con Jina AI e Milvus Lite

Migliora le tue applicazioni di ricerca in Python con Jina Embeddings e Reranker e con Milvus Lite, leggero e facile da implementare.
Black background with vivid geometric shapes on the sides and central logos "Embeddings," "Reranker," and "Milvus."
Francesco Kruk, Saahil Ognawala • 6 minuti letti

Gli sviluppatori e gli ingegneri operativi attribuiscono grande valore a un'infrastruttura che possono configurare facilmente, avviare rapidamente e, in seguito, distribuire efficacemente in un ambiente di produzione scalato senza ulteriori complicazioni. Per questo motivo, Milvus Lite, l'ultimo database vettoriale leggero offerto dal nostro partner Milvus, è uno strumento importante per gli sviluppatori Python per sviluppare rapidamente applicazioni di ricerca, specialmente quando utilizzato insieme a modelli di ricerca di alta qualità e facili da usare.

In questo articolo, descriveremo come Milvus Lite integra Jina Embeddings v2 e Jina Reranker v1 utilizzando l'esempio di un'applicazione Retrieval Augmented Generation (RAG) costruita sulle chat dei canali interni pubblici di un'azienda fittizia per permettere ai dipendenti di ottenere risposte alle loro domande organizzative in modo accurato e utile.

tagPanoramica di Milvus Lite, Jina Embeddings e Jina Reranker

Milvus Lite è una nuova versione leggera del database vettoriale leader Milvus, che ora viene offerto anche come libreria Python. Milvus Lite condivide la stessa API di Milvus distribuito su Docker o Kubernetes ma può essere facilmente installato tramite un comando pip di una riga, senza configurare un server.

Con l'integrazione di Jina Embeddings v2 e Jina Reranker v1 in pymilvus, l'SDK Python di Milvus, ora hai l'opzione di incorporare direttamente i documenti utilizzando lo stesso client Python per qualsiasi modalità di distribuzione di Milvus, incluso Milvus Lite. Puoi trovare i dettagli dell'integrazione di Jina Embeddings e Reranker nelle pagine di documentazione di pymilvus.

Con la sua finestra di contesto di 8k token e capacità multilingue, Jina Embeddings v2 codifica la semantica ampia del testo e garantisce un recupero accurato. Aggiungendo Jina Reranker v1 alla pipeline, puoi perfezionare ulteriormente i tuoi risultati attraverso la codifica incrociata dei risultati recuperati direttamente con la query per una comprensione contestuale più profonda.

tagMilvus e Modelli Jina AI in Azione

Questo tutorial si concentrerà su un caso d'uso pratico: l'interrogazione della cronologia delle chat Slack di un'azienda per rispondere a un'ampia gamma di domande basate su conversazioni passate.

Flowchart detailing the Rust community's model training process, featuring steps from the "Next training step?" query through
Flusso del processo per interrogare i dati Slack usando una query di esempio

Per esempio, un dipendente potrebbe chiedere informazioni sul prossimo passo in un processo di training AI, come nello schema del processo sopra. Utilizzando Jina Embeddings, Jina Reranker e Milvus, possiamo identificare accuratamente le informazioni rilevanti nei messaggi Slack registrati. Questa applicazione può migliorare la produttività sul posto di lavoro rendendo più facile l'accesso a informazioni preziose dalle comunicazioni passate.

Per generare le risposte, utilizzeremo Mixtral 7B Instruct attraverso l'integrazione di HuggingFace in Langchain. Per utilizzare il modello, hai bisogno di un token di accesso HuggingFace che puoi generare come descritto qui.

Puoi seguire il tutorial su Colab o scaricando il notebook.

Google Colab

tagInformazioni sul Dataset

Il dataset utilizzato in questo tutorial è stato generato utilizzando GPT-4 e intende replicare le cronologie delle chat dei canali Slack di Blueprint AI. Blueprint è una startup AI fittizia che sviluppa i propri modelli fondazionali. Puoi scaricare il dataset qui.

I dati sono organizzati in canali, ognuno rappresentativo di una collezione di thread Slack correlati. Ogni canale ha un'etichetta di argomento, una delle dieci opzioni: distribuzione del modello, training del modello, fine-tuning del modello, etica e mitigazione dei bias, feedback degli utenti, vendite, marketing, onboarding del modello, design creativo e gestione del prodotto. Un partecipante è noto come "utente esperto". Puoi utilizzare questo campo per validare i risultati dell'interrogazione per trovare l'utente più esperto in un argomento, come ti mostreremo di seguito.

Ogni canale contiene anche una cronologia delle chat con thread di conversazione fino a 100 messaggi per canale. Ogni messaggio nel dataset contiene le seguenti informazioni:

  • L'utente che ha inviato il messaggio
  • Il testo del messaggio inviato dall'utente
  • Il timestamp del messaggio
  • Il nome del file che l'utente potrebbe aver allegato al messaggio
  • L'ID del messaggio
  • L'ID del messaggio genitore se il messaggio era all'interno di un thread originato da un altro messaggio
Diagram showing the structure of a messaging system, detailing the relationship between 'Channel' and 'Message' entities, wit
Un diagramma UML della struttura dei dati delle chat.

tagConfigurazione dell'Ambiente

Per iniziare, installa tutti i componenti necessari:

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

Scarica il dataset:

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

Imposta la tua Jina AI API Key in una variabile d'ambiente. Puoi generarne una qui.

import os
import getpass

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

Fai lo stesso per il tuo Token Hugging Face. Puoi trovare come generarne uno qui. Assicurati che sia impostato su READ per accedere a Hugging Face Hub.

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

tagCreazione della Collezione Milvus

Crea la Collezione Milvus per indicizzare i dati:

from pymilvus import MilvusClient, DataType

# Specify a local file name as uri parameter of MilvusClient to use 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)

tagPreparare i dati

Analizza la cronologia della chat ed estrai i metadati:

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)

tagIncorporare i dati della chat

Crea embedding per ogni messaggio utilizzando Jina Embeddings v2 per recuperare informazioni rilevanti dalla chat:

from pymilvus.model.dense import JinaEmbeddingFunction

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

embeddings = jina_ef.encode_documents(messages)

tagIndicizzare i dati della chat

Indicizza i messaggi, i loro embedding e i relativi metadati:

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
)

tagInterrogare la cronologia chat

È il momento di fare una domanda:

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

Ora incorpora la query e recupera i messaggi rilevanti. Qui recuperiamo i cinque messaggi più rilevanti e li riordiniamo utilizzando 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])

Infine, genera una risposta alla query utilizzando Mixtral 7B Instruct e i messaggi riordinati come contesto:

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 risposta alla nostra domanda è:

"Basandosi sulle informazioni contestuali, User5 sembra essere il più esperto in protocolli di crittografia nel tuo team. Hanno menzionato che i nuovi protocolli migliorano significativamente la sicurezza dei dati, specialmente per i deployment cloud."

Se leggi i messaggi in chat_history.json, puoi verificare tu stesso se User5 è l'utente più esperto.

tagRiepilogo

Abbiamo visto come configurare Milvus Lite, incorporare i dati delle chat utilizzando Jina Embeddings v2 e perfezionare i risultati di ricerca con Jina Reranker v1, tutto all'interno di un caso d'uso pratico di ricerca in una cronologia chat di Slack. Milvus Lite semplifica lo sviluppo di applicazioni Python senza la necessità di configurazioni server complesse. La sua integrazione con Jina Embeddings e Reranker mira ad aumentare la produttività rendendo più facile l'accesso alle informazioni preziose dal tuo ambiente di lavoro.

tagUsa ora i modelli Jina AI e Milvus

Milvus Lite con integrati Jina Embeddings e Reranker ti fornisce una pipeline di elaborazione completa, pronta all'uso con poche righe di codice.

Ci piacerebbe conoscere i tuoi casi d'uso e parlare di come l'estensione Jina AI Milvus possa adattarsi alle tue esigenze aziendali. Contattaci tramite il nostro sito web o il nostro canale Discord per condividere il tuo feedback e rimanere aggiornato sui nostri ultimi modelli. Per domande sull'integrazione tra Milvus e Jina AI, unisciti alla community Milvus.

Categorie:
Blog tecnico
rss_feed

Per saperne di più
marzo 11, 2026 • 7 minuti letti
Bootstrapping Audio Embeddings from Multimodal LLMs
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 minuti letti
Identifying Embedding Models from Raw Numerical Values
Han Xiao
Fingerprint illustration made from numbers, showcasing digital and high-tech design on a light background.
settembre 09, 2025 • 11 minuti letti
Multimodal Embeddings in Llama.cpp and 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
Lingua / tema attuale
Search Foundation
Lettore
Incorporamenti
Riclassificazione
Ottieni la chiave API Jina
Limite di velocità
Chi siamo
Notizia
Scarica il logo Jina
open_in_new
Scarica il logo Elastic
open_in_new
Stato dell'API
Elastic © 2026.SicurezzaTermini & CondizioniPrivacyGestisci i cookieNon vendere né condividere le mie informazioni personali
Questo sito web e tutti i contenuti, software, prodotti e servizi ad esso associati sono destinati esclusivamente all'uso professionale. Non è previsto né raccomandato alcun utilizzo da parte dei consumatori.