Créer un RAG agentique avec Rust, OpenAI et Qdrant

DEV - 24/05
Salut! Dans cet article, nous allons parler de la création d'un workflow RAG agentique avec Rust ! Bien...

Salut! Dans cet article, nous allons parler de la création d'un workflow RAG agentique avec Rust ! Nous allons créer un agent capable de prendre un fichier CSV, de l'analyser et de l'intégrer dans Qdrant, ainsi que de récupérer les intégrations pertinentes de Qdrant pour répondre aux questions des utilisateurs sur le contenu du fichier CSV.

Vous êtes intéressé par le déploiement ou souhaitez simplement voir à quoi ressemble le code final ? Vous pouvez trouver le référentiel ici.

Qu’est-ce que Agentic RAG ?

Agentic RAG, ou Agentic Retrieval Augmented Generation, est le concept consistant à mélanger des agents d'IA avec RAG pour pouvoir produire un flux de travail encore meilleur pour être adapté à un cas d'utilisation spécifique qu'un flux de travail d'agent ne le serait normalement.

Essentiellement, la différence entre ce flux de travail et un flux de travail d'agent classique résiderait dans le fait que chaque agent peut accéder individuellement aux intégrations d'une base de données vectorielle pour pouvoir récupérer des données contextuellement pertinentes, ce qui entraînerait des réponses plus précises à tous les niveaux dans un flux de travail d'agent IA !

Commencer

Pour commencer, utilisezlancement de la navette cargopour créer un nouveau projet.

Ensuite, nous ajouterons les dépendances dont nous avons besoin à l'aide d'un extrait de shell :

cargo ajouter de toute façon cargo ajouter async-openai cargo ajouter qdrant-client cargo ajouter serde -F dériver cargo ajouter serde-json cargo ajouter navette-qdrant cargo ajouter uuid -F v4
Entrer en mode plein écran Quitter le mode plein écran

Nous devrons également nous assurer d'avoir une URL Qdrant et une clé API, ainsi qu'une clé API OpenAI. Shuttle utilise des variables d'environnement via unSecretStoremacro dans la fonction principale et peut être stockée dans leSecrets.tomldéposer:

OPENAI_API_KEY = ""
Entrer en mode plein écran Quitter le mode plein écran

Ensuite, nous mettrons à jour notre fonction principale pour avoir notre macro Qdrant et notre macro secrets. Nous allons parcourir chaque secret et le définir comme variable d'environnement - cela nous permet d'utiliser nos secrets globalement, sans avoir à référencer leSecretStorevariable du tout :

#[shuttle_runtime::main] async fn main( #[shuttle_qdrant::Qdrant] qdrant_client: QdrantClient, #[shuttle_runtime::Secrets] secrets: SecretStore, ) -> Shuttle_axum::ShuttleA...
[Courte citation de 8% de l'article original]
Loading...