Source: http://www.poma-ai.com/docs/pipelines/

# RAG Pipeline Recipes: From Your Parser to Your Vector Database

Every production RAG pipeline has the same three-part anatomy: a **parsing/OCR step** that turns documents into text, a **vector database** that stores and searches embeddings, and — between them — the step that decides retrieval quality: **chunking**.

The first two are usually already chosen. You run Mistral OCR because it fits your cost profile, or self-host PaddleOCR-VL for data locality; you run Qdrant because you like hybrid search, or pgvector because you already operate Postgres. Those are good decisions. The 104 recipes below keep both of them and fix the middle: POMA's [bring-your-own-OCR connector](/document-ingestion-chunking-rag) consumes your tool's raw output, rebuilds document hierarchy, and emits [chunksets](/learn/chunking/chunksets) shaped for your database's retrieval primitives — via `vektoria`'s `assemble()` for the databases without a first-party POMA connector yet.

## Browse by parser

- **[Mistral OCR](/optimal-chunker-mistral-ocr)** — recipes: [Qdrant](/pipelines/mistral-ocr-to-qdrant) · [Pinecone](/pipelines/mistral-ocr-to-pinecone) · [Weaviate](/pipelines/mistral-ocr-to-weaviate) · [pgvector](/pipelines/mistral-ocr-to-pgvector) · [Milvus](/pipelines/mistral-ocr-to-milvus) · [Chroma](/pipelines/mistral-ocr-to-chroma) · [Turbopuffer](/pipelines/mistral-ocr-to-turbopuffer) · [Vespa](/pipelines/mistral-ocr-to-vespa) · [Elasticsearch](/pipelines/mistral-ocr-to-elasticsearch) · [OpenSearch](/pipelines/mistral-ocr-to-opensearch) · [Redis](/pipelines/mistral-ocr-to-redis) · [MongoDB Atlas](/pipelines/mistral-ocr-to-mongodb-atlas) · [LanceDB](/pipelines/mistral-ocr-to-lancedb)
- **[LlamaParse](/optimal-chunker-llamaparse)** — recipes: [Qdrant](/pipelines/llamaparse-to-qdrant) · [Pinecone](/pipelines/llamaparse-to-pinecone) · [Weaviate](/pipelines/llamaparse-to-weaviate) · [pgvector](/pipelines/llamaparse-to-pgvector) · [Milvus](/pipelines/llamaparse-to-milvus) · [Chroma](/pipelines/llamaparse-to-chroma) · [Turbopuffer](/pipelines/llamaparse-to-turbopuffer) · [Vespa](/pipelines/llamaparse-to-vespa) · [Elasticsearch](/pipelines/llamaparse-to-elasticsearch) · [OpenSearch](/pipelines/llamaparse-to-opensearch) · [Redis](/pipelines/llamaparse-to-redis) · [MongoDB Atlas](/pipelines/llamaparse-to-mongodb-atlas) · [LanceDB](/pipelines/llamaparse-to-lancedb)
- **[Azure Document Intelligence](/optimal-chunker-azure-document-intelligence)** — recipes: [Qdrant](/pipelines/azure-document-intelligence-to-qdrant) · [Pinecone](/pipelines/azure-document-intelligence-to-pinecone) · [Weaviate](/pipelines/azure-document-intelligence-to-weaviate) · [pgvector](/pipelines/azure-document-intelligence-to-pgvector) · [Milvus](/pipelines/azure-document-intelligence-to-milvus) · [Chroma](/pipelines/azure-document-intelligence-to-chroma) · [Turbopuffer](/pipelines/azure-document-intelligence-to-turbopuffer) · [Vespa](/pipelines/azure-document-intelligence-to-vespa) · [Elasticsearch](/pipelines/azure-document-intelligence-to-elasticsearch) · [OpenSearch](/pipelines/azure-document-intelligence-to-opensearch) · [Redis](/pipelines/azure-document-intelligence-to-redis) · [MongoDB Atlas](/pipelines/azure-document-intelligence-to-mongodb-atlas) · [LanceDB](/pipelines/azure-document-intelligence-to-lancedb)
- **[Unstructured.io](/optimal-chunker-unstructured)** — recipes: [Qdrant](/pipelines/unstructured-to-qdrant) · [Pinecone](/pipelines/unstructured-to-pinecone) · [Weaviate](/pipelines/unstructured-to-weaviate) · [pgvector](/pipelines/unstructured-to-pgvector) · [Milvus](/pipelines/unstructured-to-milvus) · [Chroma](/pipelines/unstructured-to-chroma) · [Turbopuffer](/pipelines/unstructured-to-turbopuffer) · [Vespa](/pipelines/unstructured-to-vespa) · [Elasticsearch](/pipelines/unstructured-to-elasticsearch) · [OpenSearch](/pipelines/unstructured-to-opensearch) · [Redis](/pipelines/unstructured-to-redis) · [MongoDB Atlas](/pipelines/unstructured-to-mongodb-atlas) · [LanceDB](/pipelines/unstructured-to-lancedb)
- **[Docling](/optimal-chunker-docling)** — recipes: [Qdrant](/pipelines/docling-to-qdrant) · [Pinecone](/pipelines/docling-to-pinecone) · [Weaviate](/pipelines/docling-to-weaviate) · [pgvector](/pipelines/docling-to-pgvector) · [Milvus](/pipelines/docling-to-milvus) · [Chroma](/pipelines/docling-to-chroma) · [Turbopuffer](/pipelines/docling-to-turbopuffer) · [Vespa](/pipelines/docling-to-vespa) · [Elasticsearch](/pipelines/docling-to-elasticsearch) · [OpenSearch](/pipelines/docling-to-opensearch) · [Redis](/pipelines/docling-to-redis) · [MongoDB Atlas](/pipelines/docling-to-mongodb-atlas) · [LanceDB](/pipelines/docling-to-lancedb)
- **[Marker](/optimal-chunker-marker)** — recipes: [Qdrant](/pipelines/marker-to-qdrant) · [Pinecone](/pipelines/marker-to-pinecone) · [Weaviate](/pipelines/marker-to-weaviate) · [pgvector](/pipelines/marker-to-pgvector) · [Milvus](/pipelines/marker-to-milvus) · [Chroma](/pipelines/marker-to-chroma) · [Turbopuffer](/pipelines/marker-to-turbopuffer) · [Vespa](/pipelines/marker-to-vespa) · [Elasticsearch](/pipelines/marker-to-elasticsearch) · [OpenSearch](/pipelines/marker-to-opensearch) · [Redis](/pipelines/marker-to-redis) · [MongoDB Atlas](/pipelines/marker-to-mongodb-atlas) · [LanceDB](/pipelines/marker-to-lancedb)
- **[AWS Textract](/optimal-chunker-textract)** — recipes: [Qdrant](/pipelines/textract-to-qdrant) · [Pinecone](/pipelines/textract-to-pinecone) · [Weaviate](/pipelines/textract-to-weaviate) · [pgvector](/pipelines/textract-to-pgvector) · [Milvus](/pipelines/textract-to-milvus) · [Chroma](/pipelines/textract-to-chroma) · [Turbopuffer](/pipelines/textract-to-turbopuffer) · [Vespa](/pipelines/textract-to-vespa) · [Elasticsearch](/pipelines/textract-to-elasticsearch) · [OpenSearch](/pipelines/textract-to-opensearch) · [Redis](/pipelines/textract-to-redis) · [MongoDB Atlas](/pipelines/textract-to-mongodb-atlas) · [LanceDB](/pipelines/textract-to-lancedb)
- **[PaddleOCR-VL](/optimal-chunker-paddleocr-vl)** — recipes: [Qdrant](/pipelines/paddleocr-vl-to-qdrant) · [Pinecone](/pipelines/paddleocr-vl-to-pinecone) · [Weaviate](/pipelines/paddleocr-vl-to-weaviate) · [pgvector](/pipelines/paddleocr-vl-to-pgvector) · [Milvus](/pipelines/paddleocr-vl-to-milvus) · [Chroma](/pipelines/paddleocr-vl-to-chroma) · [Turbopuffer](/pipelines/paddleocr-vl-to-turbopuffer) · [Vespa](/pipelines/paddleocr-vl-to-vespa) · [Elasticsearch](/pipelines/paddleocr-vl-to-elasticsearch) · [OpenSearch](/pipelines/paddleocr-vl-to-opensearch) · [Redis](/pipelines/paddleocr-vl-to-redis) · [MongoDB Atlas](/pipelines/paddleocr-vl-to-mongodb-atlas) · [LanceDB](/pipelines/paddleocr-vl-to-lancedb)

## Browse by database

- **[Qdrant](/optimal-chunks-qdrant)** — recipes: [Mistral OCR](/pipelines/mistral-ocr-to-qdrant) · [LlamaParse](/pipelines/llamaparse-to-qdrant) · [Azure Document Intelligence](/pipelines/azure-document-intelligence-to-qdrant) · [Unstructured.io](/pipelines/unstructured-to-qdrant) · [Docling](/pipelines/docling-to-qdrant) · [Marker](/pipelines/marker-to-qdrant) · [AWS Textract](/pipelines/textract-to-qdrant) · [PaddleOCR-VL](/pipelines/paddleocr-vl-to-qdrant)
- **[Pinecone](/optimal-chunks-pinecone)** — recipes: [Mistral OCR](/pipelines/mistral-ocr-to-pinecone) · [LlamaParse](/pipelines/llamaparse-to-pinecone) · [Azure Document Intelligence](/pipelines/azure-document-intelligence-to-pinecone) · [Unstructured.io](/pipelines/unstructured-to-pinecone) · [Docling](/pipelines/docling-to-pinecone) · [Marker](/pipelines/marker-to-pinecone) · [AWS Textract](/pipelines/textract-to-pinecone) · [PaddleOCR-VL](/pipelines/paddleocr-vl-to-pinecone)
- **[Weaviate](/optimal-chunks-weaviate)** — recipes: [Mistral OCR](/pipelines/mistral-ocr-to-weaviate) · [LlamaParse](/pipelines/llamaparse-to-weaviate) · [Azure Document Intelligence](/pipelines/azure-document-intelligence-to-weaviate) · [Unstructured.io](/pipelines/unstructured-to-weaviate) · [Docling](/pipelines/docling-to-weaviate) · [Marker](/pipelines/marker-to-weaviate) · [AWS Textract](/pipelines/textract-to-weaviate) · [PaddleOCR-VL](/pipelines/paddleocr-vl-to-weaviate)
- **[pgvector](/optimal-chunks-pgvector)** — recipes: [Mistral OCR](/pipelines/mistral-ocr-to-pgvector) · [LlamaParse](/pipelines/llamaparse-to-pgvector) · [Azure Document Intelligence](/pipelines/azure-document-intelligence-to-pgvector) · [Unstructured.io](/pipelines/unstructured-to-pgvector) · [Docling](/pipelines/docling-to-pgvector) · [Marker](/pipelines/marker-to-pgvector) · [AWS Textract](/pipelines/textract-to-pgvector) · [PaddleOCR-VL](/pipelines/paddleocr-vl-to-pgvector)
- **[Milvus](/optimal-chunks-milvus)** — recipes: [Mistral OCR](/pipelines/mistral-ocr-to-milvus) · [LlamaParse](/pipelines/llamaparse-to-milvus) · [Azure Document Intelligence](/pipelines/azure-document-intelligence-to-milvus) · [Unstructured.io](/pipelines/unstructured-to-milvus) · [Docling](/pipelines/docling-to-milvus) · [Marker](/pipelines/marker-to-milvus) · [AWS Textract](/pipelines/textract-to-milvus) · [PaddleOCR-VL](/pipelines/paddleocr-vl-to-milvus)
- **[Chroma](/optimal-chunks-chroma)** — recipes: [Mistral OCR](/pipelines/mistral-ocr-to-chroma) · [LlamaParse](/pipelines/llamaparse-to-chroma) · [Azure Document Intelligence](/pipelines/azure-document-intelligence-to-chroma) · [Unstructured.io](/pipelines/unstructured-to-chroma) · [Docling](/pipelines/docling-to-chroma) · [Marker](/pipelines/marker-to-chroma) · [AWS Textract](/pipelines/textract-to-chroma) · [PaddleOCR-VL](/pipelines/paddleocr-vl-to-chroma)
- **[Turbopuffer](/optimal-chunks-turbopuffer)** — recipes: [Mistral OCR](/pipelines/mistral-ocr-to-turbopuffer) · [LlamaParse](/pipelines/llamaparse-to-turbopuffer) · [Azure Document Intelligence](/pipelines/azure-document-intelligence-to-turbopuffer) · [Unstructured.io](/pipelines/unstructured-to-turbopuffer) · [Docling](/pipelines/docling-to-turbopuffer) · [Marker](/pipelines/marker-to-turbopuffer) · [AWS Textract](/pipelines/textract-to-turbopuffer) · [PaddleOCR-VL](/pipelines/paddleocr-vl-to-turbopuffer)
- **[Vespa](/optimal-chunks-vespa)** — recipes: [Mistral OCR](/pipelines/mistral-ocr-to-vespa) · [LlamaParse](/pipelines/llamaparse-to-vespa) · [Azure Document Intelligence](/pipelines/azure-document-intelligence-to-vespa) · [Unstructured.io](/pipelines/unstructured-to-vespa) · [Docling](/pipelines/docling-to-vespa) · [Marker](/pipelines/marker-to-vespa) · [AWS Textract](/pipelines/textract-to-vespa) · [PaddleOCR-VL](/pipelines/paddleocr-vl-to-vespa)
- **[Elasticsearch](/optimal-chunks-elasticsearch)** — recipes: [Mistral OCR](/pipelines/mistral-ocr-to-elasticsearch) · [LlamaParse](/pipelines/llamaparse-to-elasticsearch) · [Azure Document Intelligence](/pipelines/azure-document-intelligence-to-elasticsearch) · [Unstructured.io](/pipelines/unstructured-to-elasticsearch) · [Docling](/pipelines/docling-to-elasticsearch) · [Marker](/pipelines/marker-to-elasticsearch) · [AWS Textract](/pipelines/textract-to-elasticsearch) · [PaddleOCR-VL](/pipelines/paddleocr-vl-to-elasticsearch)
- **[OpenSearch](/optimal-chunks-opensearch)** — recipes: [Mistral OCR](/pipelines/mistral-ocr-to-opensearch) · [LlamaParse](/pipelines/llamaparse-to-opensearch) · [Azure Document Intelligence](/pipelines/azure-document-intelligence-to-opensearch) · [Unstructured.io](/pipelines/unstructured-to-opensearch) · [Docling](/pipelines/docling-to-opensearch) · [Marker](/pipelines/marker-to-opensearch) · [AWS Textract](/pipelines/textract-to-opensearch) · [PaddleOCR-VL](/pipelines/paddleocr-vl-to-opensearch)
- **[Redis](/optimal-chunks-redis)** — recipes: [Mistral OCR](/pipelines/mistral-ocr-to-redis) · [LlamaParse](/pipelines/llamaparse-to-redis) · [Azure Document Intelligence](/pipelines/azure-document-intelligence-to-redis) · [Unstructured.io](/pipelines/unstructured-to-redis) · [Docling](/pipelines/docling-to-redis) · [Marker](/pipelines/marker-to-redis) · [AWS Textract](/pipelines/textract-to-redis) · [PaddleOCR-VL](/pipelines/paddleocr-vl-to-redis)
- **[MongoDB Atlas](/optimal-chunks-mongodb-atlas)** — recipes: [Mistral OCR](/pipelines/mistral-ocr-to-mongodb-atlas) · [LlamaParse](/pipelines/llamaparse-to-mongodb-atlas) · [Azure Document Intelligence](/pipelines/azure-document-intelligence-to-mongodb-atlas) · [Unstructured.io](/pipelines/unstructured-to-mongodb-atlas) · [Docling](/pipelines/docling-to-mongodb-atlas) · [Marker](/pipelines/marker-to-mongodb-atlas) · [AWS Textract](/pipelines/textract-to-mongodb-atlas) · [PaddleOCR-VL](/pipelines/paddleocr-vl-to-mongodb-atlas)
- **[LanceDB](/optimal-chunks-lancedb)** — recipes: [Mistral OCR](/pipelines/mistral-ocr-to-lancedb) · [LlamaParse](/pipelines/llamaparse-to-lancedb) · [Azure Document Intelligence](/pipelines/azure-document-intelligence-to-lancedb) · [Unstructured.io](/pipelines/unstructured-to-lancedb) · [Docling](/pipelines/docling-to-lancedb) · [Marker](/pipelines/marker-to-lancedb) · [AWS Textract](/pipelines/textract-to-lancedb) · [PaddleOCR-VL](/pipelines/paddleocr-vl-to-lancedb)

## The full matrix

Every cell links to a complete recipe: what the parser's raw output contains, how POMA's connector turns it into chunksets, a metadata-mapping table for that specific database, end-to-end code, and the failure mode you hit wiring the two together naively.

<div style="overflow-x: auto;">

| Parser ↓ / Store → | [Qdrant](/optimal-chunks-qdrant) | [Pinecone](/optimal-chunks-pinecone) | [Weaviate](/optimal-chunks-weaviate) | [pgvector](/optimal-chunks-pgvector) | [Milvus](/optimal-chunks-milvus) | [Chroma](/optimal-chunks-chroma) | [Turbopuffer](/optimal-chunks-turbopuffer) | [Vespa](/optimal-chunks-vespa) | [Elasticsearch](/optimal-chunks-elasticsearch) | [OpenSearch](/optimal-chunks-opensearch) | [Redis](/optimal-chunks-redis) | [MongoDB Atlas](/optimal-chunks-mongodb-atlas) | [LanceDB](/optimal-chunks-lancedb) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [Mistral OCR](/optimal-chunker-mistral-ocr) | [→](/pipelines/mistral-ocr-to-qdrant) | [→](/pipelines/mistral-ocr-to-pinecone) | [→](/pipelines/mistral-ocr-to-weaviate) | [→](/pipelines/mistral-ocr-to-pgvector) | [→](/pipelines/mistral-ocr-to-milvus) | [→](/pipelines/mistral-ocr-to-chroma) | [→](/pipelines/mistral-ocr-to-turbopuffer) | [→](/pipelines/mistral-ocr-to-vespa) | [→](/pipelines/mistral-ocr-to-elasticsearch) | [→](/pipelines/mistral-ocr-to-opensearch) | [→](/pipelines/mistral-ocr-to-redis) | [→](/pipelines/mistral-ocr-to-mongodb-atlas) | [→](/pipelines/mistral-ocr-to-lancedb) |
| [LlamaParse](/optimal-chunker-llamaparse) | [→](/pipelines/llamaparse-to-qdrant) | [→](/pipelines/llamaparse-to-pinecone) | [→](/pipelines/llamaparse-to-weaviate) | [→](/pipelines/llamaparse-to-pgvector) | [→](/pipelines/llamaparse-to-milvus) | [→](/pipelines/llamaparse-to-chroma) | [→](/pipelines/llamaparse-to-turbopuffer) | [→](/pipelines/llamaparse-to-vespa) | [→](/pipelines/llamaparse-to-elasticsearch) | [→](/pipelines/llamaparse-to-opensearch) | [→](/pipelines/llamaparse-to-redis) | [→](/pipelines/llamaparse-to-mongodb-atlas) | [→](/pipelines/llamaparse-to-lancedb) |
| [Azure Document Intelligence](/optimal-chunker-azure-document-intelligence) | [→](/pipelines/azure-document-intelligence-to-qdrant) | [→](/pipelines/azure-document-intelligence-to-pinecone) | [→](/pipelines/azure-document-intelligence-to-weaviate) | [→](/pipelines/azure-document-intelligence-to-pgvector) | [→](/pipelines/azure-document-intelligence-to-milvus) | [→](/pipelines/azure-document-intelligence-to-chroma) | [→](/pipelines/azure-document-intelligence-to-turbopuffer) | [→](/pipelines/azure-document-intelligence-to-vespa) | [→](/pipelines/azure-document-intelligence-to-elasticsearch) | [→](/pipelines/azure-document-intelligence-to-opensearch) | [→](/pipelines/azure-document-intelligence-to-redis) | [→](/pipelines/azure-document-intelligence-to-mongodb-atlas) | [→](/pipelines/azure-document-intelligence-to-lancedb) |
| [Unstructured.io](/optimal-chunker-unstructured) | [→](/pipelines/unstructured-to-qdrant) | [→](/pipelines/unstructured-to-pinecone) | [→](/pipelines/unstructured-to-weaviate) | [→](/pipelines/unstructured-to-pgvector) | [→](/pipelines/unstructured-to-milvus) | [→](/pipelines/unstructured-to-chroma) | [→](/pipelines/unstructured-to-turbopuffer) | [→](/pipelines/unstructured-to-vespa) | [→](/pipelines/unstructured-to-elasticsearch) | [→](/pipelines/unstructured-to-opensearch) | [→](/pipelines/unstructured-to-redis) | [→](/pipelines/unstructured-to-mongodb-atlas) | [→](/pipelines/unstructured-to-lancedb) |
| [Docling](/optimal-chunker-docling) | [→](/pipelines/docling-to-qdrant) | [→](/pipelines/docling-to-pinecone) | [→](/pipelines/docling-to-weaviate) | [→](/pipelines/docling-to-pgvector) | [→](/pipelines/docling-to-milvus) | [→](/pipelines/docling-to-chroma) | [→](/pipelines/docling-to-turbopuffer) | [→](/pipelines/docling-to-vespa) | [→](/pipelines/docling-to-elasticsearch) | [→](/pipelines/docling-to-opensearch) | [→](/pipelines/docling-to-redis) | [→](/pipelines/docling-to-mongodb-atlas) | [→](/pipelines/docling-to-lancedb) |
| [Marker](/optimal-chunker-marker) | [→](/pipelines/marker-to-qdrant) | [→](/pipelines/marker-to-pinecone) | [→](/pipelines/marker-to-weaviate) | [→](/pipelines/marker-to-pgvector) | [→](/pipelines/marker-to-milvus) | [→](/pipelines/marker-to-chroma) | [→](/pipelines/marker-to-turbopuffer) | [→](/pipelines/marker-to-vespa) | [→](/pipelines/marker-to-elasticsearch) | [→](/pipelines/marker-to-opensearch) | [→](/pipelines/marker-to-redis) | [→](/pipelines/marker-to-mongodb-atlas) | [→](/pipelines/marker-to-lancedb) |
| [AWS Textract](/optimal-chunker-textract) | [→](/pipelines/textract-to-qdrant) | [→](/pipelines/textract-to-pinecone) | [→](/pipelines/textract-to-weaviate) | [→](/pipelines/textract-to-pgvector) | [→](/pipelines/textract-to-milvus) | [→](/pipelines/textract-to-chroma) | [→](/pipelines/textract-to-turbopuffer) | [→](/pipelines/textract-to-vespa) | [→](/pipelines/textract-to-elasticsearch) | [→](/pipelines/textract-to-opensearch) | [→](/pipelines/textract-to-redis) | [→](/pipelines/textract-to-mongodb-atlas) | [→](/pipelines/textract-to-lancedb) |
| [PaddleOCR-VL](/optimal-chunker-paddleocr-vl) | [→](/pipelines/paddleocr-vl-to-qdrant) | [→](/pipelines/paddleocr-vl-to-pinecone) | [→](/pipelines/paddleocr-vl-to-weaviate) | [→](/pipelines/paddleocr-vl-to-pgvector) | [→](/pipelines/paddleocr-vl-to-milvus) | [→](/pipelines/paddleocr-vl-to-chroma) | [→](/pipelines/paddleocr-vl-to-turbopuffer) | [→](/pipelines/paddleocr-vl-to-vespa) | [→](/pipelines/paddleocr-vl-to-elasticsearch) | [→](/pipelines/paddleocr-vl-to-opensearch) | [→](/pipelines/paddleocr-vl-to-redis) | [→](/pipelines/paddleocr-vl-to-mongodb-atlas) | [→](/pipelines/paddleocr-vl-to-lancedb) |

</div>

New to the anatomy? Start with the [RAG chunking guide](/guides/rag-chunking/), the [document ingestion guide](/guides/document-ingestion/), or the [RAG architecture guide](/guides/rag-architecture/).