From 299f5088588f96d6355246fc4cc083d21fbcedc8 Mon Sep 17 00:00:00 2001 From: gwen Date: Mon, 3 Mar 2025 15:38:55 +0100 Subject: [PATCH] rag --- hello_world_rag/faiss.md | 55 +++++++++++++++++++ hello_world_rag/sentence_transformer.md | 15 +++++ .../sentence_transformer_install.md | 29 ++++++++++ 3 files changed, 99 insertions(+) create mode 100644 hello_world_rag/faiss.md create mode 100644 hello_world_rag/sentence_transformer.md create mode 100644 hello_world_rag/sentence_transformer_install.md diff --git a/hello_world_rag/faiss.md b/hello_world_rag/faiss.md new file mode 100644 index 0000000..fb1a263 --- /dev/null +++ b/hello_world_rag/faiss.md @@ -0,0 +1,55 @@ +FAISS (Facebook AI Similarity Search) est une bibliothèque développée par Facebook AI Research pour la recherche de similarité efficace et le clustering de vecteurs denses. Elle est souvent utilisée pour créer des bases de données vectorielles, qui permettent de stocker et de rechercher des embeddings de manière efficace. Voici comment vous pouvez installer et utiliser FAISS : + +### Installation de FAISS + +1. **Installer FAISS** : Vous pouvez installer FAISS via pip. Il est recommandé d'installer la version avec support GPU si vous avez une carte graphique compatible. + + Pour une installation CPU : + ```bash + pip install faiss-cpu + ``` + + Pour une installation GPU (nécessite CUDA) : + ```bash + pip install faiss-gpu + ``` + +2. **Vérifier l'installation** : Vous pouvez vérifier que FAISS est correctement installé en important la bibliothèque dans un script Python : + + ```python + import faiss + print(faiss.__version__) + ``` + +### Utilisation de FAISS + +Voici un exemple simple de l'utilisation de FAISS pour créer une base de données vectorielle et effectuer une recherche : + +```python +import faiss +import numpy as np + +# Exemple de données : des vecteurs aléatoires +data = np.random.random((100, 128)).astype('float32') + +# Créer un index FAISS +index = faiss.IndexFlatL2(128) # 128 est la dimension des vecteurs + +# Ajouter des vecteurs à l'index +index.add(data) + +# Effectuer une recherche : trouver les 5 vecteurs les plus similaires à une requête +query = np.random.random((1, 128)).astype('float32') +k = 5 # Nombre de voisins les plus proches à rechercher +distances, indices = index.search(query, k) + +print("Indices des vecteurs les plus similaires :", indices) +print("Distances correspondantes :", distances) +``` + +### Points Clés + +- **Indexation** : FAISS permet de créer des index pour des vecteurs de haute dimension, ce qui permet de faire des recherches rapides. +- **Recherche de similarité** : Vous pouvez rechercher des vecteurs similaires en utilisant différentes métriques de distance (par exemple, L2). +- **Efficacité** : FAISS est optimisé pour gérer de grandes quantités de données et peut tirer parti des GPU pour accélérer les calculs. + diff --git a/hello_world_rag/sentence_transformer.md b/hello_world_rag/sentence_transformer.md new file mode 100644 index 0000000..8d26890 --- /dev/null +++ b/hello_world_rag/sentence_transformer.md @@ -0,0 +1,15 @@ +# le modèle `paraphrase-MiniLM-L6-v2` + +Le modèle `SentenceTransformer` est une bibliothèque Python conçue pour générer des représentations vectorielles (embeddings) de phrases ou de textes. Ces embeddings peuvent être utilisées pour diverses tâches de traitement du langage naturel (NLP), telles que la recherche sémantique, le regroupement de textes, la classification de texte, etc. + +Le modèle `paraphrase-MiniLM-L6-v2` est une version spécifique de SentenceTransformer qui a été entraînée pour générer des embeddings de phrases de manière à ce que des phrases sémantiquement similaires aient des embeddings proches dans l'espace vectoriel. Voici quelques points clés concernant ce modèle : + +1. **Objectif** : Il est principalement utilisé pour la détection de paraphrases, c'est-à-dire pour identifier si deux phrases ont le même sens. + +2. **Architecture** : Il est basé sur l'architecture MiniLM, qui est une version plus légère et plus rapide de BERT, tout en conservant une bonne performance. + +3. **Utilisation** : Vous pouvez l'utiliser pour calculer la similarité entre des phrases, regrouper des textes similaires, ou effectuer des recherches sémantiques dans une base de données de textes. + +4. **Avantages** : Étant une version plus légère, il est plus rapide et nécessite moins de ressources pour l'inférence, ce qui le rend adapté pour des applications nécessitant une réponse rapide ou des ressources limitées. + +Si vous souhaitez voir un exemple de code ou une démonstration de son utilisation, n'hésitez pas à me le faire savoir ! diff --git a/hello_world_rag/sentence_transformer_install.md b/hello_world_rag/sentence_transformer_install.md new file mode 100644 index 0000000..33b091a --- /dev/null +++ b/hello_world_rag/sentence_transformer_install.md @@ -0,0 +1,29 @@ +Pour utiliser le modèle `paraphrase-MiniLM-L6-v2` avec la bibliothèque `SentenceTransformer`, vous devez suivre les étapes suivantes : + +1. **Installer les dépendances nécessaires** : Assurez-vous d'avoir installé la bibliothèque `sentence-transformers`. Vous pouvez l'installer via pip si ce n'est pas déjà fait : + + ```bash + pip install sentence-transformers + ``` + +2. **Charger le modèle** : Une fois la bibliothèque installée, vous pouvez charger le modèle `paraphrase-MiniLM-L6-v2` dans votre script Python. Voici un exemple de code pour le faire : + + ```python + from sentence_transformers import SentenceTransformer + + # Charger le modèle + model = SentenceTransformer('paraphrase-MiniLM-L6-v2') + + # Exemple d'utilisation pour obtenir les embeddings de phrases + sentences = ["Ceci est une phrase.", "C'est une autre phrase."] + embeddings = model.encode(sentences) + + # Afficher les embeddings + for sentence, embedding in zip(sentences, embeddings): + print(f"Phrase: {sentence}") + print(f"Embedding: {embedding}\n") + ``` + +3. **Utiliser le modèle** : Une fois le modèle chargé, vous pouvez l'utiliser pour générer des embeddings de phrases, calculer des similarités, etc. + +Si vous rencontrez des problèmes ou avez besoin d'aide supplémentaire, n'hésitez pas à demander !