『Future Tech Night #17「embeddingの活用」と「MLOps」のAI勉強会』(https://future.connpass.com/event/231310/)で発表した資料です。
レコメンドの手法であるMatrix Factorizationについて勉強したのでその記録です。 以下の検証に関するコードはgithubにあげてあります。 github.com 1. 本記事の概要 レコメンドの手法であるMatrix Factorizationについての概要 Matrix FactorizationのNeural Network形式の表現とKerasでの実装 Deep Matrix Factorizationの表現とKerasでの実装 MovieLensでの精度検証 2. Matrix Factorizationの概要 ざっくりと。 Matrix Factorizationはレコメンドの手法のひとつ。 レコメンドの参考サイト レコメンドつれづれ ~1-1. 協調フィルタリングのコンセプトを知る~ - Platinum Data Blog by BrainPad レコメンドつ
はじめに Hnswlibは、C++で書かれたHierarchical Navigable Small World graphsによる近似最近傍探索ライブラリである。近似最近棒探索のベンチマークでも上位に登場する。Ruby bindingがなかったので作成した。 hnswlib | RubyGems.org | your community gem host 使い方 インストールは、普通にgemコマンドでインストールできる。外部ライブラリもPythonも必要ない。 $ gem install hnswlib APIは単順にバインドしたものと、それらをラップしたAnnoyライクなHnswIndexを用意した。 検索インデックスの作成は、以下のようになる。データを追加すれば、それでグラフ構造が内部で作られるので、build_indexみたいなメソッドはない。 データベクトルはRuby Array
MeiliSearchを最近知ったので、使い勝手などを検証するメモです。 環境 OS: Ubuntu 20.04 MeiliSearch: 0.22.0 MeiliSearchとは? meilisearch/MeiliSearch: Powerful, fast, and an easy to use search engine Rustで実装された全文検索エンジン、という認識。 メイリサーチ という読み方でいいのかな? 各プログラミング言語向けのライブラリが公式で提供されていたりしてすごい。 meilisearch/meilisearch-rails: MeiliSearch integration for Ruby on Rails meilisearch/meilisearch-ruby: Ruby SDK for the MeiliSearch API meilisearch/me
はじめに こんにちは、助太刀バックエンドチームの市川です! 助太刀では、2024 年 2 月に以下の生成 AI の活用した社内情報検索システムに関するプレスリリースを発信しました。 助太刀、生成 AI を使った社内 Wiki を開発。生成 AI の活用により社内業務の効率化を強化 今回は、その社内情報検索システムに関する LLM(大規模言語モデル)、RAG(Retrieval-Augmented Generation) を用いた検索システムの構築について紹介したいと思います。 上記プレスリリースにも記載がありますが、主に社内業務効率化を目的とし開発・導入しました。 RAG とは RAG(Retrieval-augmented Generation) とは、質問やプロンプトに対して出力する答えを作る過程で、あらかじめ用意された外部データベース内の既存情報を参照(Retrieval)することで
はじめに 前回の記事では、リーダブルコードの原則に従ったコードレビューを自動化できないものか・・と考えた結果、『RAGにリーダブルコードの原則を取り込ませてコードレビューをしてもらおう!!』という検証をしてみました。 検証環境の構築は AWSマネジメントコンソール を使用していましたが、今回は AWS SAM を使用して、より簡単に環境構築する方法の解説を行います。 使用するリポジトリは以下になります。 事前準備 リージョン切り替え 全ての手順は「東京リージョン」で実施することを前提としているため、AWSのマネジメントコンソールからリージョンを「東京」に変更してから手順を進めてください。 Cloud9 ローカルマシンの環境を汚さないために、Cloud9 を使用して環境構築を行います。Cloud9 には、今回の作業に必要な以下のツールが事前にインストールされているため、環境構築がスムーズに行
どうしてこの記事を書いたのか Elasticsearch/Neo4j 活用していらっしゃいますでしょうか? どちらも著名なデータベース(DB)ですが,その特徴・用途は異なります. Elasticsearch は文字情報の検索に強く,Neo4j は関連性を早く調べたいという場合に利用されているイメージです. 所感ですが,Neo4j でもデータのプロパティを基準にクエリをかけたいこともありますし,Elasticsearch に入っているデータ同士を紐づけたいことも往々にしてあります. しかし,愚直にそうしてしまうとスループットが低くなったり,実装に継続的な作りこみが必要だったり,なかなか考え物です. そこで,データ構造を見直しつつ何とか良いとこ取りできないかなと検討するようになりました. Neo4j と Elasticsearch の連携を行うことで, Elasticsearchに投入したデー
最初に この記事は以下の2つの記事 Snowflake Arcticを試してみる 続・Chromaで埋め込みを体感してみる~日本語対応編~ を組み合わせてみたメモとなります。 昨日(2024/5/6)にSnowflakeのVector EmbeddingsがPublic Preview(PuPr)になったので、RAGの実装をSnowflakeで完結させることもできるのですが、この記事ではプリミティブな方法を理解するという目的でベクトルデータベースを別途導入して接続しています。 RAGの仕組み RAGの仕組みについては、Snowflake社のBLOG Snowflake Cortexを使用した簡単かつ安全なRAGからLLMへの推論に記載されている以下の図が分かりやすいです。 大まかには以下のような流れになります。 Embedしたドキュメントをあらかじめベクトルデータベースに保存しておく ユー
ご覧いただきありがとうございます。 Google Colaboratoryにアカウントをお持ちの方は、上の「Open in Colab」と書かれた青いボタンを押せば直接notebookをColabで開けます。ぜひ動かしてみてください。 過去の記事も含め、全てのコードをGithubで公開しています。 GoogleからScaNN (Scalable Nearest Neighbors)というベクトル近似近傍検索が出て、速さを売りにしています。確かにベンチマークでも結果がでています。ただ、このベンチマーク、CPUオンリーで、GPUを使う近傍検索との比較がありません。GPUが使えるといえば、Faissですね。というわけで、早速、GPUが使えるcolabで測定してみましょう。 結論を先に言うと、GPUすごく速いです。 と、その前に、ランタイムはまだGPUにしないでください。途中で切り替えないとうまく
特に特殊なライブラリは用いておりません. sklearnを入れているのは,irisによって挙動を確認するためです. コード コードは以下の通りです. import numpy as np import pandas as pd from sklearn.datasets import load_iris from collections import Counter from sklearn.model_selection import train_test_split """ input: train_X: pd.DataFrame(N1, d) test_X: pd.DataFrame(N2, d) train_Y: pd.DataFrame(N1, 1) k: int output: pred_Y: np.ndarrray(N2, k) """ def calculate_simil
"result": "Anthropic Claude 3にはいくつかのモデルIDがあります。その一部を次に示します。\n\n - anthropic.claude-3-haiku-20240307-v1:0\n - anthropic.claude-3-opus-20240229-v1:0\n\n Cohere Command RのモデルIDは次のとおりです。\n\n - cohere.command-r-v1:0" 1ステップ目 1ステップ目ではユーザー入力を元にRetrieverの検索クエリを生成します。 Bedrock の InvokeModelを配置し、設定タブを以下の様にします。 基盤モデルとして Command R+ を指定し、モデルパラメーターを以下の様にします。
Cohere の Command R+ は RAG に最適化しているとかなんとかで幾つかの機能があります。 このうち、クエリの書き換え機能について動作を確認していきます。 Command R+とは? 以下の記事をご参照。 RAGのクエリの書き換えとは? RAGを実装する際に、ユーザーからのクエリ内容をそのままRetrieveに使うと検索効率上あまりうれしくないのは良く知られた事です(多分)。 Amazon Bedrock + Anthropic Claude 3 開発体験ワークショップ RAG編 次のステップ これを回避する為には抽象化して書くと以下のような処理が必要で、Command R+は以下の「①」「③」に適した生成モードを具備しています。 ① ユーザーの問い合わせを Retrieve に適した形に書き直す(正しく書くと、Retrieveに適したクエリを生成する) ② Retriev
Knowledge Bases for Amazon Bedrock を OpenSearch Serverless で試してみる AWSbedrockKnowledgeBaseForAmazonBedrock はじめに Knowledge Bases for Amazon Bedrock を利用すると、会社のデータなどを利用した RAG を簡単に構成できる機能です。OpenSearch Serverless などのベクトルデータストアと連携して、データの格納、利用などを便利に利用できます。以下のような機能が提供されています。 OpenSearch Serverless の自動作成 S3 上のデータを Embedding して、ベクトルデータストアに自動的に格納 入力したテキストに紐づくデータを、ベクトルデータストアから自動的に取得して、テキストを生成 など 今回は、Knowledge B
[アップデート] Amazon Bedrockで新モデル「Cohere Command R/R+」が利用可能になったので、RAGで使ってみた みなさん、こんにちは! 福岡オフィスの青柳です。 Amazon Bedrockの基礎モデル (FM) で、新しいモデル「Cohere Command R」「Cohere Command R+」が利用可能になりました。 Cohere Command R and Command R+ now available in Amazon Bedrock どのようなものなのか、さっそく使ってみました。 Cohere Command R/R+ってどんなモデル? リリースノートでは、次のように説明されています。 Command R+ は、RAG やマルチステップ ツールの使用など、長いコンテキストのタスク向けに最適化された Cohere の最も強力な生成言語モデルで
みなさんこんにちは。MLエンジニアのたかぱい(@takapy0210)です。 最近、久しぶりに機動戦士ガンダムSEEDを見直しました。(来年には劇場版の公開もあります) 地球連合軍第7機動艦隊に所属するパイロットであるムウさんの 「君は出来るだけの力を持っているだろう?なら、出来ることをやれよ」 というセリフが好きです。 相手をリスペクトしつつ、でもお前はもっとできるだろ?という期待も込もった、良い言葉だなと感じます。 さて本日は、レコメンドで使用頻度の高い類似アイテムの計算処理を2パターンで実施し、どんな差分がでるのか?を検証した結果をお話ししようと思います。 この記事はコネヒト Advent Calendarのカレンダー 10日目の記事です。 adventar.org 目次 背景 Amazon Bedrockの埋め込みモデルでベクトルを取得する item2vecで計算したベクトルを取得
はじめに Vertex AI Agent Builder で作る検索システム Vertex AI Agent Builder(旧 Vertex AI Search & Conversation)を使用すると文書検索システムが簡単に構築できて、コンソール上のデモ用検索ポータルから検索処理が体験できます。検索キーワードの「意味」を理解して検索するセマンティックサーチを行うので、次のように微妙にタイプミスをしても、こちらの意図を汲み取って検索結果を返してくれます。また、検索結果のサマリーテキストも表示されます。 コンソールの検索ポータルで検索する例 Vertex AI Agent Builder による検索システムは、次のような構成になります。「データストア」と「検索アプリ」の2つのコンポーネントを作成して利用します。 Agent Builder による検索システムの構成図 データストアは、ドキ
はじめに Elasticsearchの特定のインデックスにサンプルデータを投入したい。でも手元にあるのはキー項目は共通な別々のCSVファイル。えーこれ全部手でマージすんの? それかスクリプト書く? めんどくさ。。 そんな経験みなさんにもありますよね? そんな時、(結局Pythonスクリプトは書きますが)Elandを使うとPandasのData FrameをそのままElasticsearchとやりとりできるので便利です。というかPandasが便利です。 依存ライブラリ 今回、Pythonのpandas, elasticsearch, elandの各ライブラリを使いますので、インストールされていない場合は以下のコマンドでインストールします。
こんにちは。Algomatic の宮脇(@catshun_)です。 本記事では文書検索において一部注目された BGE M3-Embedding について簡単に紹介します。 Chen+'24 - BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation おことわり 本記事では精読レベルの 詳細な解説は含みません。 詳細については 参照元の論文をご確認ください。 不十分また不適切な言及内容がございましたらご指摘いただけますと幸いです。 プロダクト等の利用時は 必ずライセンスや利用規約を参照して下さい。 本記事で紹介する 論文 は Work in progress とコメントされており今後内容が更新される可能
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く