iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0
生成式 AI

30 天打造你的 AI Agent:LangChain × n8n 實戰系列 第 11

用 LangChain 實作問答型 AI 助手

  • 分享至 

  • xImage
  •  

昨天我們學會了 Chain 與 PromptTemplate 的基礎用法。
今天要更進一步,做一個能回答問題的 AI 助手

這類應用在實務上很常見,例如:

  • FAQ 客服機器人
  • 公司內部知識庫查詢
  • 學習筆記的智慧搜尋

一、為什麼要用 RetrievalQA?

如果單靠 LLM,它只會根據訓練知識回覆,可能會「亂編答案」。
但我們需要 AI 根據特定資料(例如文件或 FAQ)來回答。
這時候就需要 RetrievalQA

  1. 先從資料庫中找出相關內容(Retrieval)
  2. 再請 LLM 根據這些內容產生回答(QA)

二、準備環境

安裝套件:

pip install langchain-google-genai faiss-cpu langchain_community sentence-transformers

三、建立文件知識庫

假設我們有一份 FAQ,存成文字檔 faq.txt

Q: 什麼是 LangChain?
A: LangChain 是一個幫助開發者快速構建 LLM 應用的框架。

Q: 我可以用哪些 LLM 搭配 LangChain?
A: 可以用 OpenAI、Gemini、Claude、Llama 等多種模型。

Q: LangChain 的核心功能有哪些?
A: 包含 Chains、Memory、Tools、Agents。

import os
from langchain.text_splitter import CharacterTextSplitter
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
os.environ["GOOGLE_API_KEY"] = "(前幾天的Gemini API Key)"

with open("faq.txt", "r", encoding="utf-8") as f:
    text = f.read()

text_splitter = CharacterTextSplitter(chunk_size=200, chunk_overlap=50)
docs = text_splitter.create_documents([text])

# 建立 Embeddings(改用 HuggingFace 免費模型)
embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")

# 建立向量資料庫
vectorstore = FAISS.from_documents(docs, embeddings)


四、建立 RetrievalQA

現在我們把 Gemini LLM + 向量資料庫 串起來:

from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.chains import RetrievalQA

# 初始化 Gemini LLM(需要填上 API Key)
llm = ChatGoogleGenerativeAI(model="gemini-1.5-flash", temperature=0)

# 建立 RetrievalQA
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever(),
    chain_type="stuff"
)

# 測試問答
query = "LangChain 有哪些核心功能?"
result = qa_chain.run(query)
print("問題:", query)
print("回答:", result)
query2 = "LangChain 的使用案例有哪些?"
result2 = qa_chain.run(query2)
print("問題:", query2)
print("回答:", result2) 

https://ithelp.ithome.com.tw/upload/images/20250919/201684586DZKncZv5X.png

輸出結果會是:

問題: LangChain 有哪些核心功能?
回答: 包含 Chains、Memory、Tools、Agents。
問題: LangChain 的使用案例有哪些?
回答: 我不知道 LangChain 的具體使用案例。

https://ithelp.ithome.com.tw/upload/images/20250924/2016845895lKHaP2Lz.png

五、今日小結

今天我們學會了:

  1. RetrievalQA 的概念:讓 AI 先檢索,再回答
  2. 如何建立文件向量索引(用 HuggingFace Embeddings + FAISS)
  3. 打造問答型 AI 助手,可以根據文件內容回答問題

這樣,你已經能做出一個小型 FAQ 聊天機器人了 🚀


👉 明天,我們會讓 Agent 學會使用 工具,例如:計算數學、查天氣,讓它不只會「回答」,還能「行動」。


上一篇
第一次上手 LangChain:用 Gemini 打造智慧 Chain 與 PromptTemplate
系列文
30 天打造你的 AI Agent:LangChain × n8n 實戰11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言