> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # RAG (Retrieval-Augmented Generation) dans Mastra La RAG dans Mastra vous aide à enrichir les sorties des LLM en intégrant un contexte pertinent issu de vos propres sources de données, ce qui améliore la précision et ancre les réponses dans des informations réelles. Le système RAG de Mastra fournit : - Des API standardisées pour traiter et vectoriser les documents - La prise en charge de plusieurs vector stores - Des stratégies de découpage et d’embedding pour une récupération optimale - De l’observabilité pour suivre les performances d’embedding et de récupération ## Exemple Pour implémenter la RAG, vous traitez vos documents en chunks, créez des embeddings, les stockez dans une base de données vectorielle, puis récupérez le contexte pertinent au moment de la requête. ```ts import { embedMany } from 'ai' import { PgVector } from '@mastra/pg' import { MDocument } from '@mastra/rag' import { z } from 'zod' // 1. Initialize document const doc = MDocument.fromText(`Your document text here...`) // 2. Create chunks const chunks = await doc.chunk({ strategy: 'recursive', size: 512, overlap: 50, }) // 3. Generate embeddings; we need to pass the text of each chunk import { ModelRouterEmbeddingModel } from '@mastra/core/llm' const { embeddings } = await embedMany({ values: chunks.map(chunk => chunk.text), model: new ModelRouterEmbeddingModel('openai/text-embedding-3-small'), }) // 4. Store in vector database const pgVector = new PgVector({ id: 'pg-vector', connectionString: process.env.POSTGRES_CONNECTION_STRING, }) await pgVector.upsert({ indexName: 'embeddings', vectors: embeddings, }) // using an index name of 'embeddings' // 5. Query similar chunks const results = await pgVector.query({ indexName: 'embeddings', queryVector: queryVector, topK: 3, }) // queryVector is the embedding of the query console.log('Similar chunks:', results) ``` Cet exemple présente l’essentiel. Initialisez un document et créez des chunks, puis générez et stockez des embeddings avant de rechercher du contenu similaire. ## Traitement des documents Le traitement des documents est l’élément de base de la RAG. Les documents peuvent être découpés avec différentes stratégies (récursive, fenêtre glissante, etc.) et enrichis de métadonnées. Consultez la [documentation sur le découpage et l’embedding](https://mastra.zisheng.pro/fr/guides/rag/chunking-and-embedding). ## Stockage vectoriel Mastra prend en charge plusieurs vector stores pour la persistance des embeddings et la recherche de similarité, notamment pgvector, OracleDB, Pinecone, Qdrant et MongoDB. Consultez la [documentation sur les bases de données vectorielles](https://mastra.zisheng.pro/fr/guides/rag/vector-databases). ## Ressources supplémentaires - [Exemple de RAG Chain of Thought](https://github.com/mastra-ai/mastra/tree/main/examples/basics/rag/cot-rag)