EmpezarEmpieza gratis

Preparación de los documentos y la base de datos vectorial

En los siguientes ejercicios, crearás un flujo de trabajo RAG completo para mantener una conversación con un documento PDF que contiene el artículo RAG VS Fine-Tuning: Pipelines, Tradeoffs, and a Case Study on Agriculture_ de Balaguer et al. (2024). Esto funciona dividiendo los documentos en fragmentos, almacenándolos en una base de datos vectorial, definiendo un prompt para conectar los documentos recuperados y la entrada del usuario y creando una cadena de recuperación para que el LLM acceda a estos datos externos.

En este ejercicio, prepararás el documento para su almacenamiento y lo incorporarás a una base de datos vectorial Chroma. Utilizarás un RecursiveCharacterTextSplitter para dividir el PDF en fragmentos y los incorporarás a una base de datos vectorial Chroma utilizando una función de incrustaciones de OpenAI. Al igual que con el resto del curso, no es necesario que proporciones tu propia clave API de OpenAI.

Las siguientes clases ya se han importado por ti: RecursiveCharacterTextSplitter, Chroma y OpenAIEmbeddings.

Este ejercicio forma parte del curso

Desarrollo de aplicaciones LLM con LangChain

Ver curso

Instrucciones del ejercicio

  • Divide los documentos en data utilizando un RecursiveCharacterTextSplitter con un chunk_size de 300 y un chunk_overlap de 50.
  • Utiliza el método .from_documents() para incrustar e incorporar los documentos en una base de datos vectorial Chroma con la función de incrustaciones OpenAI proporcionada.
  • Configura vectorstore como un objeto recuperador que devuelve los tres documentos principales para su uso en la cadena RAG final.

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

loader = PyPDFLoader('rag_vs_fine_tuning.pdf')
data = loader.load()

# Split the document using RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
    chunk_size=____,
    chunk_overlap=____)
docs = splitter.split_documents(data) 

# Embed the documents in a persistent Chroma vector database
embedding_function = OpenAIEmbeddings(api_key='', model='text-embedding-3-small')
vectorstore = Chroma.____(
    docs,
    embedding=embedding_function,
    persist_directory=os.getcwd()
)

# Configure the vector store as a retriever
retriever = vectorstore.as_retriever(
    search_type="similarity",
    search_kwargs={"k": ____}
)
Editar y ejecutar código