Mise en place de la génération augmentée de recherche (RAG)
watsonx Code Assistant Plan standard
Le RAG est le processus d'optimisation de la sortie du grand modèle linguistique (LLM) par l'augmentation de l'invite avec le contexte supplémentaire. Si vous soumettez une requête, watsonx Code Assistant utilise les outils RAG pour extraire les informations de vos bases de code ou de votre documentation. Ce contexte pertinent est ajouté à la requête avant qu'elle ne soit envoyée au modèle LLM. Le système RAG détermine les sources qui doivent être incluses ou exclues pour générer une réponse contenant les informations les plus utiles.
RAG a besoin du plan standard watsonx Code Assistant et de l'extension Visual Studio Code. Il n'est pas disponible pour une utilisation avec le plug-in Eclipse.
IBM watsonx Code Assistant soutient le RAG qui améliore la qualité des réponses aux demandes des utilisateurs dans un contexte pertinent et actualisé à partir des bases de code et de la documentation. RAG réduit les hallucinations du modèle et améliore la précision des réponses générées.
Vous pouvez configurer watsonx Code Assistant avec des référentiels de code spécifiques et de la documentation de projet qui ne sont pas stockés dans le référentiel Git en utilisant RAG pour extraire les informations pertinentes pour le message de chat. Vous pouvez configurer des documents tels que des documents API, des fichiers readme, des documents techniques et de conception, des documents Markdown, des PDF, des documents Word et des documents PowerPoint.
La figure suivante illustre la procédure de configuration de RAG pour watsonx Code Assistant:
Activation du RAG
Pour activer le RAG :
-
Provisionner un magasin de vecteurs sur IBM Cloud.
-
Fournir une instance de magasin vectoriel Milvus ou Elasticsearch sur le site IBM Cloud. Si le magasin de vecteurs est déjà disponible sur votre site IBM Cloud, vous pouvez sauter cette étape.
-
Pour provisionner une instance de magasin vectoriel Elasticsearch, voir Provisionnement Databases for Elasticsearch.
-
Pour provisionner une instance de magasin vectoriel Milvus, voir Provisionnement watsonx.data.
Milvus fait partie de IBM watsonx.data. Vous pouvez provisionner une instance Milvus avec le plan d'entreprise watsonx.data.
-
-
Facultatif : Créez une instance de IBM watsonx.ai Studio pour indexer le référentiel de code.
-
-
Indexez ou actualisez vos référentiels de code sur Milvus ou Elasticsearch. Pour plus d'informations, voir Indexation des référentiels de code avec IBM watsonx.ai Studio.
Mettre en place les actifs de connexion :
-
Utilisez l'espace de déploiement existant dans votre instance de service watsonx Code Assistant.
-
Créer un actif de connexion pour chaque index créé dans le magasin de vecteurs. Pour plus d'informations, voir Création d'un poste de connexion.
-
-
Configurez le jeton d'accès personnel Git dans Visual Studio Code et utilisez les invites compatibles avec RAG.
- Cliquez sur l'icône de votre profil dans GitHub et allez dans Paramètres > Paramètres du développeur > Jetons d'accès personnels > Jetons (classiques).
- Copiez votre jeton d'accès personnel.
- Dans Visual Studio Code, cliquez sur View, puis sur Command Palette.
- Recherchez
WCA, puis cliquez sur Enter GitHub Personal Access Token for WCA. - Saisissez votre code d'accès personnel GitHub et appuyez sur
EnterouReturn. - Dans les messages de chat, saisissez
@repo < instruction >ou@docs < instruction >pour générer une réponse qui utilise le contexte du référentiel ou des documents du magasin vectoriel. Remplacer le paramètre< instruction >par un message d'invite.
-
Exemple de syntaxe pour utiliser le référentiel référencé :
@repo how is a chat message processed?watsonx Code Assistant utilise les référentiels indexés en fonction des conditions suivantes :
-
Si un référentiel est ouvert dans Visual Studio Code, watsonx Code Assistant recherche par défaut le contexte dans le référentiel ouvert.
-
Si plusieurs référentiels sont ouverts dans Visual Studio Code, watsonx Code Assistant recherche le contexte du référentiel associé au fichier récemment consulté.
-
Watsonx Code Assistant recherche le fichier
repo.yamldans le référentiel indexé lorsque vous saisissez la syntaxe@repo < instruction >dans le chat. Si un ou plusieurs fichiers de configuration YAML sont configurés, watsonx Code Assistant utilise tous les dépôts configurés pour générer une réponse. Si la configuration YAML n'est pas configurée, watsonx Code Assistant utilise le référentiel sélectionné.
-
-
Exemple de syntaxe pour utiliser la collection de documents référencés :
@docs What are the steps to setup a connection to the user data store?Watsonx Code Assistant utilise les collections de documents indexés en fonction des conditions suivantes :
-
Si le document est ouvert dans Visual Studio Code, watsonx Code Assistant recherche par défaut le contexte dans le référentiel ouvert.
-
Si plusieurs collections de documents sont ouvertes dans Visual Studio Code, watsonx Code Assistant recherche le contexte du dernier document consulté.
-
Watsonx Code Assistant recherche le fichier
docs.yamldans le référentiel indexé lorsque vous saisissez la syntaxe@docs < instruction >dans le chat. Si un ou plusieurs fichiers de configuration YAML sont configurés, watsonx Code Assistant utilise toutes les collections de documents configurées pour générer une réponse. Si la configuration YAML n'est pas configurée, watsonx Code Assistant utilise tous les documents portant le nomdocs_<filename>dans votre espace de déploiement.
-
Facultatif : si vous devez configurer YAML pour des référentiels indexés ou des collections de documents, voir Configuration de YAML pour RAG.
Mise en place d'une configuration YAML pour RAG
Vous pouvez configurer YAML pour permettre à watsonx Code Assistant de rechercher plusieurs référentiels en même temps ou d'utiliser le référentiel de code ou le document indexé spécifique dans le magasin de vecteurs. Si vous ne définissez pas de configuration YAML, watsonx Code Assistant utilise par défaut le référentiel ouvert dans Visual Studio Code.
watsonx Code Assistant utilise la méthode d'autorisation par clé API pour s'assurer que vous ne pouvez accéder qu'aux référentiels ou collections de documents autorisés.
Pour mettre en place une configuration YAML pour un référentiel indexé spécifique, suivez les étapes suivantes :
-
Créez un dossier
.wca/repoà la racine du référentiel. -
Créez un fichier YAML avec les champs suivants :
repo: - url: git@github.ibm.com:code-assistant/<my-code>.gitSi vous devez configurer watsonx Code Assistant avec plusieurs référentiels, créez un fichier
repo.yamlpour chaque référentiel qui doit être utilisé pour générer une réponse.
Pour mettre en place une configuration YAML pour des collections de documents spécifiques, suivez les étapes suivantes :
-
Créez un dossier
.wca/docsà la racine du référentiel. -
Créez un fichier YAML avec les champs suivants :
docs: - url: my_collection
Scénarios de cas d'utilisation
Les scénarios d'utilisation expliquent le fonctionnement de RAG et la manière dont les données sont extraites des référentiels ou des documents indexés.
Utilisation d'un référentiel de code unique
Si vous travaillez dans un seul référentiel et que vous souhaitez utiliser le code de ce référentiel comme contexte pour les conversations de chat, suivez les étapes suivantes :
-
Assurez-vous que vous avez accès au référentiel dans GitHub.
-
Indexer le référentiel dans le magasin de vecteurs. Pour plus d'informations, voir Indexer le référentiel de code avec IBM watsonx.ai Studio
-
Créer un actif de connexion pour le référentiel. Pour plus d'informations, voir Création d'un poste de connexion.
-
Générez un jeton d'accès personnel Git à partir de votre compte GitHub et terminez la configuration sur Visual Studio Code.
-
Ouvrez le référentiel dans Visual Studio Code.
-
Utilisez la commande
@repodans le chat pour générer une réponse qui utilise le contexte du référentiel.
Utiliser plusieurs référentiels de code
Si vous travaillez sur un référentiel qui dépend d'un autre référentiel, vous pouvez utiliser le code des deux référentiels comme contexte pour les conversations de chat. Pour utiliser les deux référentiels, suivez les étapes suivantes :
-
Assurez-vous que vous avez accès aux deux référentiels sur GitHub.
-
Indexer séparément chaque référentiel dans la base de données vectorielles. Pour plus d'informations, voir Indexation du référentiel de code avec IBM watsonx.ai Studio.
-
Créez deux actifs de connexion pour chaque magasin de vecteurs. Pour plus d'informations, voir Création d'un poste de connexion.
-
Générez un jeton d'accès personnel Git à partir de votre compte GitHub et terminez la configuration sur Visual Studio Code.
-
Dans le premier dépôt, mettez en place la configuration YAML pour lister les deux dépôts.
-
Utilisez la commande
@repodans le chat pour générer une réponse qui utilise le contexte des deux référentiels.
Si vous utilisez le même index pour les deux référentiels, le contrôle d'accès GitHub n'est pas utilisé pour le second référentiel. Si vous n'avez pas accès à l'un des référentiels, watsonx Code Assistant génère le contexte à partir du référentiel autorisé uniquement.
Permettre à tous les utilisateurs d'une équipe d'accéder aux référentiels de documentation du projet
Vous pouvez permettre à tous les utilisateurs d'une équipe d'accéder aux référentiels de documentation du projet et d'utiliser les documents comme contexte pour les conversations par chat.
Pour permettre l'accès à tous les utilisateurs :
-
Indexer les référentiels de documentation du projet dans le magasin de vecteurs. Pour plus d'informations, voir Indexation du référentiel de code avec IBM watsonx.ai Studio.
Vous pouvez utiliser le même index pour tous les référentiels de documentation si tous les utilisateurs ont accès aux référentiels de documentation du projet indexés. Si les utilisateurs ont une restriction d'accès au référentiel indexé, voir Permettre aux utilisateurs d'une autre sous-équipe d'accéder aux référentiels de documentation du projet.
-
Créer un actif de connexion pour l'index de documentation dans l'espace de déploiement qui inclut tous les utilisateurs de l'équipe. Pour plus d'informations, voir Création d'un poste de connexion.
-
Utilisez la commande
@docsdans le chat pour générer une réponse qui utilise le contexte de l'index de la documentation.
Les jetons d'accès personnels GitHub ne sont pas utilisés pour vérifier l'accès au contenu de la documentation. Vous pouvez combiner plusieurs référentiels de documentation dans le même index du magasin vectoriel. Le contenu de la documentation est moins restrictif que les dépôts de code et un index unique pour tous les dépôts de documentation simplifie le processus de gestion de l'index. L'autorisation d'accéder aux référentiels documentaires n'est accordée qu'aux utilisateurs embarqués dans l'espace de déploiement.
Permettre aux utilisateurs d'une autre sous-équipe d'accéder aux référentiels de documentation du projet
Dans ce cas d'utilisation, différentes sous-équipes au sein d'une grande équipe gèrent les référentiels de documentation du projet. L'accès aux dépôts de documentation est limité aux différentes sous-équipes. Les autres sous-équipes n'ont pas accès à ces dépôts de documentation.
Pour permettre à chaque sous-équipe d'accéder aux référentiels de documentation du projet :
-
Indexer les référentiels de documentation séparément dans le magasin de vecteurs. Pour plus d'informations, voir Indexation du référentiel de code avec IBM watsonx.ai Studio.
-
Assurez-vous que l'espace de déploiement est créé pour chaque sous-équipe qui inclut ses utilisateurs.
-
Pour chaque index de référentiel documentaire, créez un poste de connexion dans l'espace de déploiement correspondant. Pour plus d'informations, voir Création d'un poste de connexion.
-
Utilisez la commande
@docsdans le chat pour générer une réponse qui utilise le contexte de l'index de la documentation.
Watsonx Code Assistant utilise l'index du référentiel documentaire en fonction de l'espace de déploiement attribué aux utilisateurs. La configuration côté client n'est pas nécessaire.
Permettre aux utilisateurs basés sur des rôles d'accéder aux référentiels de documentation des projets
Dans ce cas d'utilisation, les utilisateurs d'une équipe ont besoin d'accéder à différents ensembles de documents en fonction de leur rôle. L'étendue de la documentation utilisée comme contexte varie d'un utilisateur à l'autre sans restriction d'accès. Par exemple, les développeurs n'ont besoin que de la documentation technique et de l'API, tandis que les analystes commerciaux se concentrent sur les documents relatifs aux processus commerciaux.
Pour personnaliser les référentiels de documentation utilisés comme contexte :
-
Indexer séparément chaque référentiel documentaire dans la base de données vectorielle. Pour plus d'informations, voir Indexation du référentiel de code avec IBM watsonx.ai Studio.
-
Créer un bien de connexion pour chaque index dans l'espace de déploiement de l'équipe. Pour plus d'informations, voir Création d'un poste de connexion.
-
Mettre en place une configuration YAML pour l'index de la documentation requise qui est utilisé comme contexte. Si vous devez utiliser plusieurs index de documentation, définissez une configuration YAML pour chaque index de documentation.
-
Utilisez la commande
@docsdans le chat pour générer une réponse qui utilise le contexte de l'index de la documentation.