Začněte nyníZačněte zdarma

Příprava dokumentů a vektorové databáze

V následujících cvičeních sestavíš kompletní RAG workflow pro konverzaci s PDF dokumentem obsahujícím článek RAG VS Fine-Tuning: Pipelines, Tradeoffs, and a Case Study on Agriculture od Balaguera a kol. (2024). Celý proces zahrnuje rozdělení dokumentů na části, jejich uložení do vektorové databáze, definování promptu pro propojení načtených dokumentů se vstupem uživatele a sestavení retrieval chain, díky které má LLM přístup k těmto externím datům.

V tomto cvičení připravíš dokument k uložení a vložíš ho do vektorové databáze Chroma. K rozdělení PDF použiješ RecursiveCharacterTextSplitter a dokumenty vložíš do vektorové databáze Chroma pomocí embedovací funkce OpenAI. Stejně jako v celém kurzu nemusíš zadávat vlastní OpenAI API klíč.

Následující třídy jsou již naimportované: RecursiveCharacterTextSplitter, Chroma a OpenAIEmbeddings.

Toto cvičení je součástí kurzu

Vývoj LLM aplikací s LangChain

Zobrazit kurz

Pokyny k cvičení

  • Rozděl dokumenty v data pomocí RecursiveCharacterTextSplitter s hodnotou chunk_size nastavenou na 300 a chunk_overlap na 50.
  • Pomocí metody .from_documents() vytvoř embeddingy a vlož dokumenty do vektorové databáze Chroma s použitím poskytnuté embedovací funkce OpenAI.
  • Nastav vectorstore jako objekt retrieveru, který vrací 3 nejrelevantnější dokumenty pro použití ve finálním RAG řetězci.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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": ____}
)
Upravit a spustit kód