# 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 %}

```


```
