ComeçarComece gratuitamente

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

Nos próximos exercícios, você criará um fluxo de trabalho 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 partes, armazenando-os em um banco de dados vetorial, definindo um prompt para conectar os documentos recuperados e a entrada do usuário e criando uma cadeia de recuperação para que o LLM acesse esses dados externos.

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

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

Este exercício faz parte do curso

Desenvolvimento de aplicativos LLM com LangChain

Ver Curso

Instruções de exercício

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

Exercício interativo prático

Experimente este exercício preenchendo 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 código