LangchainとVector Storeでチャットボットが参照した文献情報を確認する
LangchainとVector Storeでチャットボットが参照した文献情報を確認する
はじめに
前回の記事では、langchainのVector Storeを使って、PDF書類を読み込ませたチャットボットの作り方を紹介しました。
Vectore StoreにPDF書類を読み込ませると、デフォルトでは、PDF書類の読み込んだ時に、使用したファイルパスとページ番号のみがmetadataとして保存されます。
しかし、PDF書類などを参照するチャットボットの場合、回答だけでなく、書類の作成日時やダウンロード先のURLを返すことも必要になるかと思います。
本記事では、回答だけでなく、参照した書類の情報を返す方法を紹介します。
方法
- 書類の情報をmetadataに追加する
- 回答でmetadataを返す
書類の情報をmetadataに追加する
やり方はシンプルで、PDF書類を読み込んでいるところで、metadata
に追加したい情報を辞書型で渡すだけです。
まず、PyPDFLoader
でPDF書類を読み込みます。
from langchain.document_loaders import PyPDFLoader
path = "sample.pdf"
loader = PyPDFLoader(path)
pages = loader.load_and_split()
このとき、pagesの中身はlangchain.document.Document
オブジェクトのリストになっています。
langchain.document.Document
オブジェクトは、page_content
とmetadata
を持つオブジェクトです。
metadata
は、source
とpage
の2つのキーを持つ辞書型です。
次に、metadata
に追加したい情報を辞書型で渡します。
for page in pages:
page.metadata['title'] = 'pdfのタイトル'
page.metadata['url'] = 'pdfのダウンロード先のURL'
page.metadata['created_at'] = 'pdfの作成日時'
これで、metadata
に追加したい情報を追加できました。
あとは、前回の記事で紹介したように、VectorStore
にDocument
オブジェクトを保存すれば、metadata
に追加した情報も保存されます。
回答でmetadataを返す
langchainを使用したチャットボットでmetadataを返すには、引数にreturn_source_documents=True
を渡します。
# チャットボットを作成する
qa = ConversationalRetrievalChain.from_llm(
ChatOpenAI(model_name="gpt-3.5-turbo",temperature=0), # ボットの文章を生成するためのllm
vector_stores.as_retriever(),
return_source_documents=True # sourceを返すか
)
return_source_documents=True
を設定すると、返り値にsource_documents
キーが追加され、こちらからmetadataを取得できるようになります。
query = input("ボットへの質問:")
chat_history = []
result = qa({'question': query, "chat_history": chat_history})
references = [doc.metadata for doc in result['source_documents']]
おわりに
本記事では、LangchainのVector Storeを使用して、PDF書類を参照するチャットボットのメタデータを強化する方法について詳しく説明しました。通常、PDF書類を読み込むだけでは保存されるメタデータが限られていますが、この方法を用いれば、回答に加えて書類の作成日時やダウンロード先のURLなど、重要な情報を取得できるようになります。
Langchainを活用することで、よりコンテキストに合った回答をユーザーに提供し、チャットボットの質を向上させることができます。今後もLangchainとVector Storeを活用したさまざまな応用に挑戦し、ユーザーエクスペリエンスを向上させる方法を追求していきましょう。詳細な実装手順は記事内で紹介されているので、ぜひ試してみてください。
株式会社piponでは定期的に技術勉強会を開催しています。
ChatGPT・AI・データサイエンスについてご興味がある方は是非、ご参加ください。
株式会社piponではChatGPT・AI・データサイエンスについて業界ごとの事例を紹介しています。ご興味ある方はこちらのオウンドメディアをご覧ください。
株式会社piponのテックブログです。 ChatGPTやAzureをメインに情報発信していきます! お問い合わせはフォームへお願いします。 会社HP pipon.co.jp/ フォーム share.hsforms.com/19XNce4U5TZuPebGH_BB9Igegfgt
Discussion