JavaScriptLangChain.jsNode.js

[LangChain.jsでいろんなRAGを作る]LangChain.jsのRunnableLambdaで入力値を動的に処理する

LangChainを使用してWordPressから記事情報を取得する方法が紹介されています。非同期処理を実装するために、RunnableLambdaを利用することができます。この方法を知っていることで、他のHeadless CMSやSPARQLなどもデータソースとして利用できる可能性があります。Retrieverを使う場合は、ベクトル検索を主に使用しますが、RunnableLambdaを知ることでさまざまな検索方法を適用できます。

広告ここから
広告ここまで

LangChainなどでRAGやLLMアプリを構築していると、時よりLCELの中で動的な処理を挟みたいケースが出てきます。そんな時、RunnableSequenceの中で非同期処理を書く方法もありますが、RunnableLambdaを利用することもできます。

今回は、RunnableLambdaを利用して、WordPressから記事情報を取得する方法を紹介します。

RunnableLambdaで、動的な処理を実装する

RunnableLambdaは、コンストラクタの中で「文字列を返す非同期処理」を実装します。例えば、example.comというWordPressサイトの最新記事のタイトルを取得したい場合、このように書きます。

const wpAPIChain = new RunnableLambda({
    func: async (input) => {
        const result = await fetch('https://example.com/wp-json/wp/v2/posts')
        const posts = await result.json()
        const title = posts[0].title.rendered
        return title
    }
})

RunnableLambdaは、Chainとして扱える

RunnableLambdaを利用して動的な処理を実装するメリット(だと私が認識しているもの)の1つは、「Chainとして扱えること」です。例えば検索結果を元に質問に対する回答を生成するRAGを作りたい場合、先ほど実装したwpAPIChainRunnableSqeuenceに渡して回答文生成の前処理に利用できます。

  const chain2 = RunnableSequence.from([
    {
      input: wpAPIChain,
      question: (input) => input.question
    },
    prompt,
    chatModel,
    new StringOutputParser()
  ])

ベクトル検索を使う場合は、Retrieverの方を使うことがほとんどです。そのため、なかなかRunnableLambdaを使うケースは出てこないかもしれません。が、この方法を知っていることで、例えばWordPress以外にもmicroCMSなどのHeadless CMSやSPARQLなどを利用したオープンデータに対する検索なども、RAGのデータソースとして利用できるようになる・・・かもしれません。

参考にした記事

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts