ПочатиПочніть безкоштовно

Підготовка документів і векторної бази даних

У наступних вправах ви побудуєте повний RAG‑робочий процес, щоб спілкуватися з PDF‑документом, який містить статтю Balaguer та ін. (2024) RAG VS Fine-Tuning: Pipelines, Tradeoffs, and a Case Study on Agriculture. Це працює так: документи ділять на фрагменти, зберігають у векторній базі даних, визначають промпт, який поєднує отримані документи й користувацьке запитання, а також будують ланцюжок отримання (retrieval chain), щоб LLM мав доступ до цих зовнішніх даних.

У цій вправі ви підготуєте документ до зберігання та завантажите його у векторну базу даних Chroma. Ви використаєте RecursiveCharacterTextSplitter, щоб розбити PDF на фрагменти, і завантажите їх у векторну базу даних Chroma за допомогою функції вкладень (embeddings — векторних представлень) OpenAI. Як і в решті курсу, вам не потрібно надавати власний OpenAI API key.

Для вас уже імпортовано такі класи: RecursiveCharacterTextSplitter, Chroma і OpenAIEmbeddings.

Ця вправа є частиною курсу

Розроблення застосунків LLM за допомогою LangChain

Переглянути курс

Інструкції до вправи

  • Розбийте документи в data, використовуючи RecursiveCharacterTextSplitter із chunk_size 300 та chunk_overlap 50.
  • Використайте метод .from_documents(), щоб вбудувати (embed) і завантажити документи у векторну базу даних Chroma з наданою функцією вкладень OpenAI.
  • Налаштуйте vectorstore як об'єкт‑retriever, який повертатиме топ‑3 документи для використання в фінальному RAG‑ланцюжку.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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": ____}
)
Редагувати та запускати код