Re Reference AI

技術

LangChainとは

LLMアプリケーションの構築を、部品の組み合わせ(チェーン)として簡単にするPython/JavaScriptフレームワーク

フレームワークRAG

ひとことで言うと

AIアプリを部品の組み合わせのように作れる、開発用のフレームワーク。

概要

LangChainとは、LLMを使ったアプリケーションを構築するためのオープンソースのフレームワーク。 プロンプトの組み立て、外部データソースとの連携、ツール呼び出し、複数ステップの処理の連結(チェーン)等を、あらかじめ用意された部品(コンポーネント)を組み合わせる形で実装できるようにする。 RAGパイプラインの構築や、AIエージェントの実装によく利用され、Python版・JavaScript版が提供されている。 対応するLLMプロバイダ・ベクトルデータベース・ツールの種類が非常に多く、様々な外部サービスと連携するLLMアプリケーションの試作を素早く行える点が広く使われる理由の1つになっている。

背景

LLM活用が広がるにつれ、プロンプト管理・外部データ連携・ツール呼び出しといった、多くのLLMアプリケーションに共通する処理を毎回ゼロから実装する非効率が生じていた。 LangChainは、こうした共通処理を再利用可能な部品として提供することで開発を効率化するために開発された。

歴史

2022年10月: Harrison ChaseがLangChainを公開。 LLMアプリケーション開発の共通基盤として急速に普及し、その後の派生プロジェクト(LangGraph等)を含むエコシステムに発展した。

アーキテクチャ

プロンプトテンプレート、LLM呼び出しのラッパー、外部データ取得用のリトリーバー、ツール呼び出し、これらを連結するチェーンといったコンポーネント群から構成される。 各コンポーネントは共通のインターフェースを持ち、組み合わせて1つの処理フローを構築できる。

コード例

LCELによるチェーンの構築(概念例)

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_template("{topic}について3行で説明してください")
model = ChatOpenAI(model="gpt-4o-mini")
chain = prompt | model

result = chain.invoke({"topic": "RAG"})
print(result.content)

利点

  • RAG・ツール呼び出し等、LLMアプリケーションでよく使われる処理を部品として再利用できる
  • 対応するLLMプロバイダ・データソース・ツールの種類が豊富で、エコシステムが大きい
  • LCEL(LangChain Expression Language)により、コンポーネントをパイプ演算子で簡潔に連結できる

欠点

  • 抽象化の層が多く、内部の挙動を細かく制御・デバッグしたい場合に複雑さを感じることがある
  • バージョンアップの頻度が高く、APIの変更に追従する保守コストがかかりやすい
  • 単純な処理に対しても、フレームワーク特有の概念(チェーン・リトリーバー等)を学ぶ必要がある

比較

  • LangGraphLangGraphは、LangChainのチームが開発した、より複雑な状態管理を伴うエージェント構築向けの派生フレームワーク
  • HaystackLangChainとHaystackは、いずれもRAGパイプラインの構築に使われる代表的なフレームワーク
  • RAGLangChainは、RAGパイプラインを構築するための代表的なフレームワークの1つ

関連用語

LangGraphHaystackRAGAIエージェントプロンプトチェイニング

よくある質問

LangChainとLangGraphはどちらを使うべき?

単純なチェーン処理であればLangChainのコンポーネントで十分な場合が多いが、条件分岐やループを伴う複雑なエージェントの状態管理が必要な場合はLangGraphが向くとされる。

LangChainはPython以外でも使える?

Python版のほかJavaScript/TypeScript版(LangChain.js)も提供されており、Node.js環境のアプリケーションからも利用できる。

参考文献

関連する比較

LangChain vs LangGraph

LangChainはLLMアプリケーションの部品を組み合わせて直線的な処理(チェーン)を構築するフレームワーク、LangGraphは同じチームが開発した、状態遷移をグラフとして表現し条件分岐・ループ・マルチエージェントに対応するフレームワーク。

LangChainLangGraph

関連Zenn記事