Construcción de un Sistema de Preguntas y Respuestas en Chino con RAG y LangChain

Configuración del Entorno de Desarrollo

La implementación de sistemas de Generación Aumentada por Recuperación (RAG) permite a los Modelos de Lenguaje Grande (LLM) consultar bases de conocimiento externas para generar respuestas precisas, mitigando las alucinaciones y el problema del corte de conocimiento. Para adaptar esto al idioma chino, es crucial prestar atención a la división de texto y los modelos de embedding. A continuación, se detalla la configuración del entorno y el procesamiento de datos.

Para evitar conflictos de dependencias, se recomienda aislar el proyecto utilizando un entorno virtual. Puedes utilizar venv o conda.

# Creación de entorno con venv
python -m venv entorno_rag
# Activación en sistemas Unix
source entorno_rag/bin/activate
# Activación en Windows
entorno_rag\Scripts\activate

Una vez activado, define las dependencias en un archivo requirements.txt para garentizar la reproducibilidad:

langchain==0.1.0
langchain-community==0.0.10
chromadb==0.4.22
sentence-transformers==2.2.2
openai==1.12.0
python-dotenv==1.0.0
tiktoken==0.5.0

Instala los paquetes ejecutando pip install -r requirements.txt. Ten en cuenta que algunas librerías de parseo como unstructured pueden requerir dependencias del sistema como poppler-utils o libmagic.

Gestión de Credenciales y Variables de Entorno

Para mantener seguras las claves de API (por ejemplo, para servicios compatibles con OpenAI), es vital utilizar variables de entorno en lugar de hardcodear los valores. Crea un archivo .env en la raíz del proyecto:

OPENAI_API_KEY=tu_clave_aqui

Luego, carga estas variables en tu script de Python de la siguiente manera, renombrendo las variables para mayor claridad:

import os
from dotenv import load_dotenv

# Cargar variables de entorno
load_dotenv()

# Obtener la clave de API de forma segura
api_clave = os.getenv("OPENAI_API_KEY")

if not api_clave:
    raise EnvironmentError("La variable de entorno OPENAI_API_KEY no está configurada.")

Preparación y Carga de Documentos

La calidad de las respuestas del sistema RAG depende directamente de cómo se procesan los documentos de origen. Es necesario limpiar, segmentar y vectorizar la información. LangChain ofrece múltiples cargadores de documentos a través del módulo document_loaders, que soporta formatos como Markdown, PDF y Word.

Para cargar un archivo de texto en chino, puedes utilizar el siguiente enfoque:

from langchain_community.document_loaders import TextLoader

# Definir la ruta del documento
ruta_doc = "./datos/conocimiento.txt"

# Inicializar el cargador de texto
cargador = TextLoader(ruta_doc, encoding="utf-8")

# Cargar los datos en memoria
documentos = cargador.load()

# Verificar el contenido cargado
print(f"Total de documentos cargados: {len(documentos)}")
print(f"Contenido inicial: {documentos[0].page_content[:100]}")

Etiquetas: LangChain RAG ChromaDB Python

Publicado el 7-10 05:06