用 LangChain 載入文件做 RAG

使用 LangChain 的 Retrieval Augmented Generation(RAG)

Meri Nova

Machine Learning Engineer

認識你的講師……

 

Meri Nova

 

  • Break Into Data 創辦人
  • 機器學習工程師
  • Linkedin 與 YouTube 內容創作者

Meri 的照片。

使用 LangChain 的 Retrieval Augmented Generation(RAG)

Retrieval Augmented Generation(RAG)

 

  • LLM 侷限:知識受限

 

RAG:結合外部資料與 LLM

有人把書本形式的更多資訊交給 LLM。

1 Generated with DALL·E 3
使用 LangChain 的 Retrieval Augmented Generation(RAG)

標準 RAG 流程

單一使用者。

使用 LangChain 的 Retrieval Augmented Generation(RAG)

標準 RAG 流程

將使用者查詢送到向量資料庫。

使用 LangChain 的 Retrieval Augmented Generation(RAG)

標準 RAG 流程

從向量資料庫擷取相關文件。

使用 LangChain 的 Retrieval Augmented Generation(RAG)

標準 RAG 流程

把擷取到的文件加入模型提示。

使用 LangChain 的 Retrieval Augmented Generation(RAG)

標準 RAG 流程

將提示送到 LLM,並把輸出回傳給使用者。

使用 LangChain 的 Retrieval Augmented Generation(RAG)

為擷取做資料準備

載入文件。

使用 LangChain 的 Retrieval Augmented Generation(RAG)

為擷取做資料準備

切分文件。

使用 LangChain 的 Retrieval Augmented Generation(RAG)

為擷取做資料準備

為文件分塊做嵌入。

使用 LangChain 的 Retrieval Augmented Generation(RAG)

為擷取做資料準備

儲存文件分塊。

使用 LangChain 的 Retrieval Augmented Generation(RAG)

文件載入器

 

  • 與 AI 系統整合文件
  • 支援多種常見檔案格式
  • 第三方文件載入器

 

  • CSVLoader
  • PyPDFLoader
  • UnstructuredHTMLLoader

正在載入文件。

使用 LangChain 的 Retrieval Augmented Generation(RAG)

載入 CSV 檔

from langchain_community.document_loaders.csv_loader import CSVLoader

csv_loader = CSVLoader(file_path='path/to/your/file.csv')

documents = csv_loader.load() print(documents)
[Document(page_content='Team: Nationals\n"Payroll (millions)": 81.34\n"Wins": 98',
          metadata={'source': 'path/to/your/file.csv', 'row': 0}),
 Document(page_content='Team: Reds\n"Payroll (millions)": 82.20\n"Wins": 97',
          metadata={'source': 'path/to/your/file.csv', 'row': 1}),
 Document(page_content='Team: Yankees\n"Payroll (millions)": 197.96\n"Wins": 95',
          metadata={'source': 'path/to/your/file.csv', 'row': 2})]
使用 LangChain 的 Retrieval Augmented Generation(RAG)

載入 PDF 檔

from langchain_community.document_loaders import PyPDFLoader

pdf_loader = PyPDFLoader('rag_paper.pdf')
documents = pdf_loader.load()
print(documents)
[Document(page_content='Retrieval-Augmented Generation for\nKnowledge-Intensive...',
          metadata={'source': 'Rag Paper.pdf', 'page': 0})]
使用 LangChain 的 Retrieval Augmented Generation(RAG)

載入 HTML 檔

from langchain_community.document_loaders import UnstructuredHTMLLoader

html_loader = UnstructuredHTMLLoader(file_path='path/to/your/file.html')

documents = html_loader.load() first_document = documents[0]
print("Content:", first_document.page_content) print("Metadata:", first_document.metadata)
Content: Welcome to Our Website
Metadata: {'source': 'path/to/your/file.html', 'section': 0}
使用 LangChain 的 Retrieval Augmented Generation(RAG)

一起來練習吧!

使用 LangChain 的 Retrieval Augmented Generation(RAG)

Preparing Video For Download...