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 も選択肢に入れると良いでしょう。