# 3.3. Implementación RAG

## Implementación de RAG: Conectando tus datos

Vamos a crear tu "Cerebro Corporativo". Tienes dos rutas para lograrlo.

#### 🛡️ Ruta A: Arquitectura Personalizada (Código Python)

* **Herramientas:** Python, LangChain, ChromaDB.
* **Perfil:** Ingenieros de datos o desarrolladores que requieren integración profunda.
* **Ventaja:** Control total sobre cómo se corta y busca la información.

#### ⚡ Ruta B: Drop & Chat (Visual - AnythingLLM)

* **Herramientas:** AnythingLLM Desktop.
* **Perfil:** Dueños de negocio, Analistas, Operaciones.
* **Ventaja:** Pasas de "cero" a "chat con documentos" en 15 minutos. Soberanía local total.

***

#### Configuración con AnythingLLM Desktop

Esta herramienta crea una base de datos vectorial local en tu máquina.

**Paso 1: Instalación** Descarga e instala [useanything.com](https://useanything.com/download).

**Paso 2: Configuración del Motor**

1. Abre la app. En "LLM Preference", selecciona **Ollama** (si lo instalaste en la sesión pasada) o **Groq** (si prefieres nube).
2. En "Vector Database", deja el default (**LanceDB**). Es local y rápido.

**Paso 3: Creación del Workspace**

1. Crea un nuevo espacio llamado "Manuales de Empresa".
2. Arrastra tus PDFs al área de carga.
3. Haz clic en **"Move to Workspace"** y luego **"Save and Embed"**.
   * *Aquí es donde ocurre la magia: tus textos se convierten en números.*

**Paso 4: La Prueba** Escribe en el chat: *"¿Cuál es la política de viáticos según el manual?"* El sistema responderá citando el documento.

\### Arquitectura RAG con LangChain

Para quienes desean integrar esto en su propio software.

**Requisitos:** `pip install langchain chromadb ollama`

```python
from langchain_community.llms import Ollama
from langchain_community.document_loaders import PyPDFLoader
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import OllamaEmbeddings

# 1. Cargar
loader = PyPDFLoader("manual_operaciones.pdf")
docs = loader.load_and_split()

# 2. Embeddings & VectorStore
embeddings = OllamaEmbeddings(model="llama3.2")
db = Chroma.from_documents(docs, embeddings)

# 3. Retrieval
query = "¿Cuál es el proceso de devolución?"
docs = db.similarity_search(query)
print(docs[0].page_content)
```

{% endtab %} {% endtabs %}

{% hint style="success" %} VALIDACIÓN DE ÉXITO Haz una pregunta cuya respuesta esté en la página 20 de un PDF. Si la IA te responde correctamente, tu RAG está vivo. {% endhint %}

```


```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://incmty.gitbook.io/llama/sesion-3/3.3.-implementacion-rag.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
