Cohere and Zilliz Cloud Integration
Cohere and Zilliz Cloud integrate to power semantic search and question-answering systems, combining Cohere's multilingual embedding models and NLP capabilities with Zilliz Cloud's high-performance vector database for efficient similarity search across large-scale datasets.
Utilisez cette intégration gratuitementQu’est-ce que Cohere
Cohere fournit des modèles de langage multilingues qui permettent aux développeurs de créer des plongements vectoriels pour représenter le sens d’un texte sous forme de liste de nombres. Il utilise des algorithmes de traitement automatique du langage naturel (NLP) de pointe pour comprendre et interpréter efficacement le langage humain, prenant en charge des applications telles que les systèmes de questions-réponses, les moteurs de recommandation de produits et les fonctionnalités de recherche d’images inversée pour l’augmentation des LLM.
En s’intégrant à Zilliz Cloud (Milvus entièrement géré), les puissants modèles de plongement de Cohere sont associés à une base de données vectorielle hautement évolutive qui fournit des recherches sémantiques — récupérant des résultats en fonction du sens et du contexte plutôt que de correspondances exactes — avec des temps de réponse aux requêtes rapides, permettant une analyse en temps réel des données non structurées dans des secteurs tels que la santé, la finance et l’e-commerce.
Avantages de l’intégration de Cohere + Zilliz Cloud
- Recherche sémantique avancée : Les embeddings de Cohere capturent le sens du texte, tandis que Zilliz Cloud récupère les résultats en fonction de la similarité sémantique plutôt que de correspondances exactes de mots-clés, améliorant ainsi la précision et la pertinence.
- Prise en charge multilingue : Le modèle
embed-multilingual-v3.0de Cohere génère des embeddings dans plusieurs langues, et Zilliz Cloud les stocke et les récupère efficacement, permettant des applications de recherche interlingue. - Analyse de données en temps réel : Les temps de réponse rapides aux requêtes de Zilliz Cloud, associés à la génération d’embeddings de Cohere, permettent l’analyse en temps réel de données non structurées pour obtenir rapidement des insights et prendre des décisions éclairées.
- Évolutivité pour les grands ensembles de données : Zilliz Cloud est hautement évolutif et peut gérer d’énormes volumes de données, ce qui le rend adapté au stockage et à la récupération d’embeddings à grande échelle alimentés par les modèles Cohere.
Fonctionnement de l’intégration
Cohere sert de couche d’embedding et de NLP, convertissant le texte en embeddings vectoriels de grande dimension à l’aide de modèles comme
embed-multilingual-v3.0. Il fournit des types d’entrée distincts pour les documents (search_document) et les requêtes (search_query) afin d’optimiser la précision de la recherche.Zilliz Cloud sert de couche de base de données vectorielle, stockant et indexant les embeddings générés par Cohere. Il fournit une recherche de similarité haute performance à l’aide de métriques comme le produit interne (IP), permettant une récupération rapide des résultats les plus pertinents à partir de grandes collections.
Ensemble, Cohere et Zilliz Cloud créent une solution de recherche sémantique de bout en bout : les données textuelles sont intégrées à l’aide des modèles de Cohere et stockées dans Zilliz Cloud. Lorsqu’un utilisateur soumet une requête, Cohere intègre le texte de la requête, et Zilliz Cloud effectue une recherche de similarité pour trouver les documents correspondants les plus proches, permettant des applications comme la réponse aux questions, les recommandations et la recherche contextuelle.
Guide étape par étape
1. Installer les packages requis
pip install pymilvus cohere pandas numpy tqdm2. Charger les modules et définir les paramètres
import cohere import pandas import numpy as np from tqdm import tqdm from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utility FILE = 'https://rajpurkar.github.io/SQuAD-explorer/dataset/train-v2.0.json' COLLECTION_NAME = 'question_answering_db' DIMENSION = 1024 COUNT = 5000 BATCH_SIZE = 96 MILVUS_HOST = 'localhost' MILVUS_PORT = '19530' COHERE_API_KEY = 'replace-this-with-the-cohere-api-key'3. Préparer le jeu de données
Utilisez le Stanford Question Answering Dataset (SQuAD) comme source de vérité pour répondre aux questions :
# Download the dataset dataset = pandas.read_json(FILE) # Clean up the dataset by grabbing all the question answer pairs simplified_records = [] for x in dataset['data']: for y in x['paragraphs']: for z in y['qas']: if len(z['answers']) != 0: simplified_records.append({'question': z['question'], 'answer': z['answers'][0]['text']}) # Grab the amount of records based on COUNT simplified_records = pandas.DataFrame.from_records(simplified_records) simplified_records = simplified_records.sample(n=min(COUNT, len(simplified_records)), random_state = 42) print(len(simplified_records))4. Créer une collection dans Milvus
# Connect to Milvus Database connections.connect(host=MILVUS_HOST, port=MILVUS_PORT) # Remove collection if it already exists if utility.has_collection(COLLECTION_NAME): utility.drop_collection(COLLECTION_NAME) # Create collection which includes the id, title, and embedding. fields = [ FieldSchema(name='id', dtype=DataType.INT64, is_primary=True, auto_id=True), FieldSchema(name='original_question', dtype=DataType.VARCHAR, max_length=1000), FieldSchema(name='answer', dtype=DataType.VARCHAR, max_length=1000), FieldSchema(name='original_question_embedding', dtype=DataType.FLOAT_VECTOR, dim=DIMENSION) ] schema = CollectionSchema(fields=fields) collection = Collection(name=COLLECTION_NAME, schema=schema) # Create an IVF_FLAT index for collection. index_params = { 'metric_type':'IP', 'index_type':"IVF_FLAT", 'params':{"nlist": 1024} } collection.create_index(field_name="original_question_embedding", index_params=index_params) collection.load()5. Insérer des données avec les embeddings Cohere
# Set up a co:here client. cohere_client = cohere.Client(COHERE_API_KEY) # Extract embeddings from questions using Cohere def embed(texts, input_type): res = cohere_client.embed(texts, model='embed-multilingual-v3.0', input_type=input_type) return res.embeddings # Insert each question, answer, and question embedding total = pandas.DataFrame() for batch in tqdm(np.array_split(simplified_records, (COUNT/BATCH_SIZE) + 1)): questions = batch['question'].tolist() embeddings = embed(questions, "search_document") data = [ { 'original_question': x, 'answer': batch['answer'].tolist()[i], 'original_question_embedding': embeddings[i] } for i, x in enumerate(questions) ] collection.insert(data=data) time.sleep(10)6. Poser des questions et rechercher
Recherchez dans la collection des réponses en intégrant la requête avec Cohere et en effectuant une recherche de similarité dans Milvus :
def search(text, top_k = 5): search_params = {} results = collection.search( data = embed([text], "search_query"), anns_field='original_question_embedding', param=search_params, limit = top_k, output_fields=['original_question', 'answer'] ) distances = results[0].distances entities = [ x.entity.to_dict()['entity'] for x in results[0] ] ret = [ { "answer": x[1]["answer"], "distance": x[0], "original_question": x[1]['original_question'] } for x in zip(distances, entities)] return ret search_questions = ['Qu’est-ce qui tue les bactéries ?', 'Quel est le plus grand chien ?'] ret = [ { "question": x, "candidates": search(x) } for x in search_questions ]En savoir plus
- Réponse aux questions avec Milvus et Cohere — Tutoriel officiel de Milvus pour créer un système de QA avec Cohere
- Créer un chatbot RAG avec LangChain, Milvus et Cohere Command R+ — Tutoriel RAG de Zilliz avec Cohere
- Mise à l’échelle de la recherche avec Milvus : gérer facilement des ensembles de données massifs — Blog de Zilliz sur la mise à l’échelle de la recherche avec les embeddings Cohere
- Documentation Cohere — Documentation officielle de Cohere
- Référence de l’API Cohere Embed — Référence de l’API d’embedding Cohere


