2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

langchainでRAGやってみた

Posted at

はじめに

本記事では、LangChainのRetrieval Augmented Generation (RAG)機能をゼロから構築する方法を解説します。RAGは、大規模言語モデル (LLM) に外部の知識ベースを組み込むことで、より正確で詳細な回答を生成することを可能にする技術です。LangChainの提供するツールを活用し、独自のRAGシステムを構築する手順を詳しく紹介します。

想定読者

  • LangChainの基本的な知識を持つ方
  • LLMを用いた質問応答システム構築に興味のある方
  • RAGの仕組みを理解し、実践したい方

実行環境

  • Python 3.10 以上
  • pip: langchain, openai, chromadb (必要なライブラリは適宜追加)

事前準備

必要なライブラリをインストールします。

pip install langchain openai chromadb

コード

GitHubリポジトリ: (作成予定)

コードの説明

1. データの準備

質問応答に使用するドキュメントデータを準備します。今回は、例としてWikipediaの記事を使用します。

# Wikipediaの記事を取得 (具体的な方法は割愛)
documents = [
    Document(page_content="...", metadata={"source": "..."}),
    # ... 
]

2. ドキュメントのベクトル化

Chromaを用いて、ドキュメントをベクトル化し、ベクトルデータベースに保存します。

from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings

# OpenAIEmbeddingsを使用してテキストを埋め込み
embeddings = OpenAIEmbeddings()

# Chromaを使用してベクトルデータベースを作成
db = Chroma.from_documents(documents, embeddings)

3. Retrieverの作成

ベクトルデータベースから関連するドキュメントを取得するためのRetrieverを作成します。

retriever = db.as_retriever()

4. LLMの設定

使用するLLMを設定します。今回は、OpenAIのモデルを使用します。

from langchain.llms import OpenAI

llm = OpenAI(temperature=0)

5. RAGパイプラインの構築

RetrievalQAチェーンを用いて、RAGパイプラインを構築します。

from langchain.chains import RetrievalQA

qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever)

6. 質問応答の実行

構築したRAGシステムを使って、質問応答を実行します。

query = "..." # 質問
answer = qa.run(query)
print(answer)

参考情報

最後に

本記事では、LangChainを用いてRAGをゼロから構築する方法を解説しました。RAGは、LLMの能力を拡張し、より高度な質問応答システムを実現するための強力な技術です。ぜひ、ご自身のデータで試してみてください。
今後もlangchainのチュートリアル内容を参考に記事を追加していきます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?