🫂

Serverless Meetup Fukuoka に行ってきた

に公開1

GW 中に 博多へ遊びに行っていました、とまとみ です。
ある日予定が空いており、AWS CLF, SAA の勉強する予定でしたがおもろそうな MEET UP 見つけたので急遽予定変更。

「福岡の IT 界隈を活発にしていこうぜ」

感が感じられ、すごくよかったです ☺️

懇親会は活き造りのイカだそうです🦑。めちゃうまそうでした。
隣の佐賀県の「呼子のイカ」が有名なんですね

まあ 懇親会の会費 ¥5,000 で高くて行ってないんですが (そもそも予定あった)

Serverless Meetup Fukuoka とは

https://serverless.connpass.com/event/348712/

Serverless Meetup は全世界の150箇所以上で運営されているServerless Architectureやその周辺技術のITコミュニティであり、その数は今も増え続けています。日本では「東京」「大阪」「札幌」「福岡」で定期的に開催されています。

どのMeetupグループも毎月のようにアプリ開発者/プラットフォーマー/フレームワークメンテナーなどが知見を共有し合っています。

だそうです。
まぁ、んなこったどうでもよくって

当日は下記の記事に沿ったワークショップを行い、

https://zenn.dev/kensh/articles/deb33f97b728e4

最終的に、下記のような LINE bot を作成しました

概要を述べると

  1. LINE I/F から、 LINE message API を call
  2. LINE message API webhook が、GAS script を call
  3. GAS script が EC2 上の Dify サーバーに REST API を call
  4. Dify から Bedrock の LLM を利用してメッセージを生成し、元の経路を通り LINE bot のメッセージとして返信

になります。シンプルですね
ただ実際に作る上で色々と学びになったので共有です

新しい知見

具体的な処理方法は 記事 を参照ください。

今回利用したサービス

Dify

Difyは、プログラミング不要でAIアプリケーションを開発できるオープンソースのプラットフォームです。チャットボット、文章作成、データ分析など、様々なAI機能をGUI上で簡単に構築できます。複数のLLMに対応し、RAG(検索拡張生成)による高度な応答も可能です。ビジネスから個人利用まで幅広く活用できます

使いやすさ: プログラミングの知識が少なくても、GUI上で直感的に操作できます。
LLM連携: OpenAI、Hugging Faceなど、複数の主要な大規模言語モデル(LLM)を容易に統合できます。
RAG対応: 検索拡張生成(RAG)の仕組みを簡単に構築でき、より高度で文脈に合った応答が可能です。
オープンソース: 柔軟性が高く、カスタマイズや拡張がしやすいです。オンプレミス環境での利用も可能です。
コスト効率: 基本的にオープンソースであるため、ライセンス費用を抑えられます。

サービス名 主な特徴 プログラミングスキル LLM連携 RAG対応 オープンソース コスト 主な用途 利点 欠点
Dify ローコードAIアプリ開発、GUI操作、豊富なLLM連携、容易なRAG構築、柔軟なカスタマイズ 不要~低 多数 基本無料 チャットボット、文章作成、データ分析など幅広いAIアプリケーション開発 GUIによる簡単な操作性、多様なLLMに対応、高度な応答が可能なRAGを容易に構築可能、オープンソースで柔軟性が高い、比較的安価に始められる 高度なカスタマイズにはある程度の知識が必要、比較的新しいサービスのため情報やコミュニティがまだ発展途上である可能性
LangChain 高度なカスタマイズ性と柔軟性、多様なコンポーネント 必要 多数 ライブラリ 複雑なAIワークフロー構築、高度な自然言語処理アプリケーション開発 非常に高い柔軟性とカスタマイズ性、豊富なコンポーネント、活発なコミュニティ 学習コストが高い、プログラミングスキルが必須
Botpress チャットボット開発特化、多様なチャネル連携 低~中 多数 クラウド/OSS 高機能なチャットボット開発、カスタマーサポート、会話型AI チャットボット開発に特化した豊富な機能、多様なチャネルとの連携が容易、GUIベースでの開発も可能 他のAIアプリケーション開発には不向き、クラウド版は有料プランがある
Coze ノーコードAIボット開発、豊富なテンプレート 不要 限定的 - × 有料 簡単なチャットボット開発、情報提供ボット 完全ノーコードで容易にチャットボットを作成可能、豊富なテンプレート LLMの選択肢が限られる、RAGに対応していない、オープンソースではないためカスタマイズ性に制限がある、クラウドベースのみ
GPTs (ChatGPT+) ChatGPTカスタマイズ、簡単なチャットボット作成 不要 ChatGPTのみ 限定的 × ChatGPT+契約 個人的な用途、簡単なタスク自動化、特定の話題に特化したチャットボット ChatGPTの強力な自然言語処理能力を利用可能、非常に簡単にチャットボットを作成できる LLMはChatGPTのみ、RAGの構築は限定的、高度な機能は利用できない、ChatGPT Plusの契約が必要
Vertex AI Google Cloudの包括的なAI/MLプラットフォーム 必要 多数 × 従量課金 機械学習モデル開発、大規模データ分析、エンタープライズ向けAIソリューション Google Cloudの強力なインフラと豊富なAI/MLサービスを利用可能、エンタープライズレベルの機能とセキュリティ 導入・運用に専門知識が必要、Difyのようなローコードな使いやすさはない、従量課金制のためコスト管理が必要

by Gemi兄

ということで、

「LLM 興味あるし、サービスとしては利用しているけど、ふぁいんちゅーにんぐ とか RAG とかよくわからん」なライト勢でも扱えるシステムです。

しかも OSS です。今回はこれを EC2 上にデプロイしました。

TiDB

TiDBは、MySQL互換の分散型NewSQLデータベースです。水平方向への高いスケーラビリティと、金融グレードの高可用性を特徴とし、OLTPとOLAPの両ワークロードを効率的に処理できるHTAP(Hybrid Transactional/Analytical Processing)能力を持ちます。自動シャーディングにより、データ量の増加や高負荷にも柔軟に対応可能です。

TiDBは、従来のRDBMSやNoSQLとは異なる特性を持つ分散型NewSQLデータベースです。


他のサービスとの比較:

MySQL: 互換性を持つ一方、TiDBは水平スケールが可能で高可用性、HTAP機能を持つ点で優れます。ただし、シンプルな読み取り処理ではMySQLの方が低レイテンシとなる場合があります。
PostgreSQL: 高度な機能と拡張性を持ちますが、TiDBのような水平方向の自動シャーディングは標準では提供されません。
NoSQL (MongoDB, Cassandraなど): スケールアウトに優れますが、ACIDトランザクションやSQLとの互換性はありません。TiDBはSQL互換性を維持しつつ、高いスケーラビリティを実現します。
他のNewSQL (CockroachDB, YugabyteDBなど): どちらも分散SQLデータベースですが、アーキテクチャや機能に差異があります。TiDBはMySQL互換性が高く、HTAP機能が組み込まれている点が特徴です。


LLMベクトルデータ保存の観点からの利点:

TiDBは、ベクトルデータ型をサポートしており、LLMのベクトル埋め込みを効率的に保存・検索できます。

既存のデータとの統合: ベクトルデータと構造化データを同じデータベースに格納できるため、アプリケーションロジックを簡素化できます。
SQLによる柔軟な検索: SQLを用いて、ベクトルデータに対する類似度検索だけでなく、他の条件との組み合わせ検索が可能です。
スケーラビリティ: 大量のベクトルデータも水平スケールによって効率的に管理できます。
HTAPによる分析: トランザクション処理と分析処理を同一システムで実行できるため、リアルタイムなベクトルデータ分析に活用できます。

このように、TiDBは高いスケーラビリティ、SQL互換性、HTAP能力、そしてベクトルデータサポートにより、LLMを活用したアプリケーションにおけるベクトルデータの保存と検索において、柔軟性と効率性を提供できるという利点があります。

by Gemi兄

OLTP とか OLAP とか HTAP とか、よくわらかんです。
まだまだ修行が足りんですね。
ひとまず、そういった DB が存在するということと、どうやら LLM のベクトルデータの保存の点で優秀なようです。

Dify はベクトルデータ保存のプロバイダとして TiDB を指定できます

(その他)

  • Postman
  • LINE message API

元から使っていたので省略です。すません

新しく知った概念・思想・理論

知っただけで、理解まではできてないので、キーワードだけ残します

  • Amazon Nova
  • RAG
  • Amazon Titan Text Embeddings
  • Amazon Bedrock の Reranker Model
  • (LLM における) ベクトルストア
  • いろいろな LLM 精度向上の手法と、その難易度

個人的に楽しめた点

実際に形にできた

今回のような AI bot を

  • 作れるのは知ってるエンジニア

から

  • 作ったことがあるエンジニア

へと昇格しました 🎉
ただ

  • 基礎的な知識は欠如してるので、応用したものを作るのが難しいエンジニア

でもあります 😖
今回ベクトルストアやらなんやらを知ったので、勉強のきっかけを知れました。

  • 基礎を理解していて、実務へと活かせる有能なエンジニア

を目指します。


ちなみにできた AI bot を友人に見せたところ

  • ChatGPT と何が違うの?

と言われました。今はただの劣化版じゃい

最近勉強した AWS 知識が活きた

記事の中で、EC2 インスタンスを起動する際に

まずはVPC/Public SubnetにEC2をインストールしインターネット経由でアクセスできるようにします。
手順は割愛しますが、デフォルトVPCに起動すればOKです。(特殊環境じゃない限りデフォルトVPCのサブネットはすべてPublicです)

t2.medium 以上、EBSは20GBを指定しておきます。OSはAmazon Linux 2023を使います。

SecurityGroupのインバウンドは0.0.0.0/0 から22,80,443を許可します。
リージョンはオレゴンを使います 後ほど解説しますが、Dify オンプレミス版が現在Novaのapac cross-region推論に対応していないためです。

というのが出てきます。これだけです。キャプチャもなんもないです。

4月初頭の私は何のこっちゃわからんでした。VPC とは。EBS とは。
それがこのテキストから EC2 インスタンス起動できました。素晴らしい、自画自賛する 🎉

あとは、行間を読み取って行う

  • EC2 インスタンスへの接続
  • パブリックIP 経由での web サーバーへのリクエスト

とか諸々、手が止まらず作業できていました。嬉しい

Bedrock 使ってみた

Bedrock を触るのがそもそも初めてで楽しかったです

今回、下記のモデルを利用しました

  • Titan Text Embeddings V2
  • Rerank 1.0
  • Nova Lite

それぞれの違いとかは全然わかってないんですが、ふと触れてみた感じ、知識 0 のところからこれを利用するのはなかなかむずかしかったので、今回触れれてよかったです。
まぁ知らなくても Dify がよしなにやってくれるんですが。

Discussion

HyeinHyein

こんにちは!サーバーレスミートアップとAI開発の経験を共有していただき、ありがとうございます。とても興味深い内容ですね。
LINE botとAmazon Bedrock、Dify、TiDBを活用したプロジェクトの実装過程が非常に詳細に説明されており、大変参考になります。特に技術スタックの比較表は情報が豊富で明確で素晴らしいです。
「知識0からスタートした」という正直な告白に共感しました。多くのエンジニアが新しい技術の学習過程で同じような感情を抱くものですね。「作れることを知っているエンジニア」から「作ったことがあるエンジニア」への昇格という表現も非常に印象的でした。