Python の LangChain に相当するものが Ruby にもあります。
langchainrb は、LLM・ベクターDB・ドキュメントローダーを組み合わせて LLM アプリを構築するための Ruby ライブラリです。
本記事では基本的な使い方から RAG の実装まで解説します。
インストール
# Gemfile
gem 'langchainrb'
gem 'ruby-openai' # LLMプロバイダーbundle install基本的な LLM 呼び出し
OpenAI を使った最もシンプルな例です。
require 'langchain'
llm = Langchain::LLM::OpenAI.new(api_key: ENV['OPENAI_API_KEY'])
response = llm.chat(messages: [
{ role: 'user', content: 'Rubyの特徴を3つ教えてください' }
])
puts response.chat_completionプロバイダーを Claude に変えるには Langchain::LLM::Anthropic を使います。
llm = Langchain::LLM::Anthropic.new(api_key: ENV['ANTHROPIC_API_KEY'])Embedding の生成
テキストをベクトル化します。
embedding = llm.embed(text: 'Rubyは楽しいプログラミング言語です')
puts embedding.embedding.length # => 1536ドキュメントローダー
PDF・テキスト・CSV など様々な形式をロードできます。
# PDF を読み込む
loader = Langchain::Loader.load('docs/manual.pdf')
docs = loader.load
# テキストを分割
splitter = Langchain::Chunker::RecursiveText.new(chunk_size: 1000, chunk_overlap: 200)
chunks = splitter.chunks(docs.first)ベクターストア(pgvector)との統合
langchainrb_rails gem を使うと Rails モデルにベクター検索を追加できます。
# Gemfile
gem 'langchainrb_rails'bin/rails generate langchainrb_rails:vectorsearch Documentモデルに vectorsearch を追加します。
class Document < ApplicationRecord
vectorsearch provider: :pgvector,
llm: Langchain::LLM::OpenAI.new(api_key: ENV['OPENAI_API_KEY'])
after_save :upsert_to_vectorstore
end類似検索はこれだけです。
Document.similarity_search('Railsのデプロイ方法', k: 3)シンプルな AI エージェント
ツールを持った AI エージェントも作れます。
calculator = Langchain::Tool::Calculator.new
agent = Langchain::Agent::ReActAgent.new(
llm: llm,
tools: [calculator]
)
agent.run(input: '123 × 456 の計算結果は?')まとめ
langchainrb は Python の LangChain に近い感覚で使えるため、LangChain の情報を参考にしながら Ruby で実装できるのが強みです。
ただしエコシステムの成熟度は RubyLLM の方が Rails 統合に特化しており、新規プロジェクトでは RubyLLM も選択肢に入れると良いでしょう。