- Il s’agissait d’un article, désormais supprimé, présentant le processus d’implémentation d’une application RAG basée sur SQL à partir d’un dataset Harry Potter mis en ligne illégalement sur Kaggle
- Azure SQL et Microsoft Fabric SQL DB prennent en charge la recherche vectorielle native, et
langchain-sqlserver permet la gestion d’un Vector Store
- Le flux couvre le chargement depuis Azure Blob Storage, le découpage du texte en chunks, la génération d’embeddings avec Azure OpenAI, puis le stockage des vecteurs dans SQL
- Utilisation de la recherche par similarité vectorielle et de filtres de métadonnées pour construire un système de Q&A précis
- Extension de l’implémentation jusqu’à une fonction de génération de fan fiction basée sur GPT4o en réutilisant le même vector store
- Lien Archive.is
Prise en charge vectorielle native d’Azure SQL et intégration avec LangChain
- Azure SQL et Microsoft Fabric SQL DB proposent en preview publique une fonction de recherche vectorielle native
- Avec la publication du package
langchain-sqlserver, SQL Server peut être géré comme LangChain Vector Store
- Installation et exemples de code fournis via les dépôts PyPI et GitHub
- En combinant Azure SQL DB, LangChain et un LLM, il est possible d’ajouter des fonctions d’IA générative avec seulement quelques lignes de code
Composition du dataset d’exemple
- Utilisation d’un dataset texte des 7 tomes de Harry Potter fourni sur Kaggle
- Contient 7 fichiers
.txt
- Dans la démo, seul le tome 1, Harry Potter and the Sorcerer’s Stone, est utilisé
- Un dataset largement connu est utilisé pour proposer un exemple facile à comprendre
Étapes de construction de l’application d’exemple
1. Installation du package langchain-sqlserver
- Installation du package d’intégration avec la commande
pip install langchain-sqlserver==0.1.1
- Activation des fonctionnalités de vector store basées sur SQL
2. Chargement des données depuis Azure Blob Storage et découpage en chunks
- Stockage puis chargement des fichiers texte Harry Potter dans Azure Blob Storage
- Utilisation de la fonction d’intégration AzureBlobStorage de LangChain
- Découpage des textes longs en petits chunks avec
langchain-text-splitter
- Pour répondre aux limites de tokens en entrée des embeddings Azure OpenAI
3. Définition des embeddings et de Chat Completion
- Utilisation d’Azure OpenAI pour générer des embeddings textuels pour chaque chunk
- Possibilité de remplacer par divers modèles d’embeddings proposés par LangChain
- Préparation du traitement question-réponse via la configuration de Chat Completion
4. Initialisation du Vector Store et insertion des documents
- Initialisation du Vector Store avec les embeddings AzureOpenAI
- Stockage des documents et des embeddings dans Azure SQL avec la fonction
add_documents
- Génération et stockage des vecteurs possibles avec peu de code
5. Exécution de la recherche par similarité
- Exécution d’une recherche par similarité vectorielle avec la fonction
similarity_search_with_score
- Prise en charge des filtres de métadonnées
- Possibilité de restreindre la portée de recherche selon des propriétés de métadonnées spécifiques
Cas d’usage 1 : construction d’un système de Q&A
- Implémentation d’un système de Q&A sur l’histoire basé sur SQL Vector Store et LangChain
- Pour chaque question utilisateur, recherche des 10 documents les plus pertinents avant génération de la réponse
- Création d’un retriever à partir de
vector_store
- Construction d’une chaîne question-réponse avec
create_stuff_documents_chain
- Définition d’un format de réponse structuré avec
ChatPromptTemplate
- Avec
create_retrieval_chain, les documents récupérés sont aussi renvoyés via la clé "context"
- Prise en charge de l’affichage des sources utilisées pour générer la réponse
Cas d’usage 2 : génération de fan fiction Harry Potter
- Implémentation d’une nouvelle fonction de génération de fan fiction par IA à partir du vector store
- Lorsqu’un utilisateur saisit un prompt, recherche de paragraphes pertinents
- Recherche de similarité contextuelle à partir des embeddings stockés dans le vector store SQL
- Regroupement des paragraphes retrouvés en une seule chaîne pour constituer le contexte d’entrée du modèle
- Transmission conjointe du contexte et du prompt utilisateur au modèle GPT4o
- Génération d’une nouvelle histoire intégrant des éléments du contexte existant
- Affichage également des informations sur les sources vectorielles référencées avec le résultat généré
Scénario d’utilisation intégré
- La combinaison du système de Q&A et de la génération de fan fiction permet d’offrir une expérience de lecture interactive
- Utilisation du Q&A lorsqu’il faut comprendre le contenu du livre
- Possibilité d’étendre une scène donnée ou de générer une fin alternative
Exemples de code et ressources
- Dépôt GitHub du notebook LangChain-SQL-RAG fourni
- Possibilité de demander des améliorations fonctionnelles via le portail de feedback Azure SQL et SQL Server
Aucun commentaire pour le moment.