ComeçarComece de graça

Preparação dos documentos e do banco de dados vetorial

Nos próximos exercícios, você vai criar um fluxo de trabalho em RAG completo para conversar com um documento PDF que contém o artigo RAG VS Fine-Tuning: Pipelines, Tradeoffs, and a Case Study on Agriculture, por Balaguer et al. (2024). Isso funciona dividindo os documentos em trechos, guardando-os em um banco de dados vetorial, definindo um prompt para conectar os documentos recuperados e a entrada do usuário e construindo uma cadeia de recuperação para que o LLM acesse esses dados externos.

Neste exercício, você vai preparar o documento para armazenamento e importá-lo para um banco de dados vetorial Chroma. Você vai usar um RecursiveCharacterTextSplitter para dividir o PDF em trechos e colocá-los em um banco de dados vetorial Chroma usando uma função de embeddings da OpenAI. Assim como no restante do curso, você não precisa fornecer sua própria chave de API da OpenAI.

As seguintes classes já foram importadas para você: RecursiveCharacterTextSplitter, Chroma e OpenAIEmbeddings.

Este exercício faz parte do curso

Desenvolvimento de aplicativos de LLM com LangChain

Ver curso

Instruções do exercício

  • Divida os documentos em data usando um divisor de caracteres recursivo com chunk_size de 300 e chunk_overlap de 50; deixe o argumento separators de fora, pois seu padrão é ["\n\n", "\n", " ", ""].
  • Defina um modelo de embeddings da OpenAI usando o placeholder <OPENAI_API_TOKEN> fornecido e use-o para incorporar e inserir os documentos em um banco de dados Chroma.
  • Configure vectorstore em um objeto retriever que retorna os 3 primeiros documentos para usar na cadeia em RAG final.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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 e executar o código