ComenzarEmpieza 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 divisor de caracteres recursivo con un chunk_size de 300 y chunk_overlap de 50; omite el argumento separators, ya que el valor predeterminado es ["\n\n", "\n", " ", ""].
  • Define un modelo de incrustaciones de OpenAI utilizando el marcador de posición <OPENAI_API_TOKEN> proporcionado y utilízalo para incrustar e incorporar los documentos en una base de datos Chroma.
  • 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 y completa el código de muestra.

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

# Split the document using RecursiveCharacterTextSplitter
splitter = ____
docs = splitter.____(data) 

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

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