タグ

searchと*programに関するsh19910711のブックマーク (61)

  • RAGで文書を1トークンに圧縮する「xRAG」について

    株式会社ナレッジセンスは、生成AIやRAGを使ったプロダクトを、エンタープライズ向けに開発提供しているスタートアップです。 記事では、「xRAG」という手法について、ざっくり理解します。「xRAG」とは、RAGシステムでLLMに投げるドキュメント(通常、数千文字ほどですよね。)を、1トークンに圧縮できるのでは?という手法です。 この記事は何 この記事は、RAGをする際にLLMに渡すドキュメントを1トークンまで圧縮できる手法「xRAG」の論文[1]について、日語で簡単にまとめたものです。 今回も「そもそもRAGとは?」については、知っている前提で進みます。確認する場合は以下の記事もご参考下さい。 題 ざっくりサマリー 「xRAG」は、RAGで渡すコンテキストを極限まで圧縮する手法です。北京大学/Microsoftの研究者らによって2024年5月に提案されました。「xRAG」を使うメリッ

    RAGで文書を1トークンに圧縮する「xRAG」について
    sh19910711
    sh19910711 2024/05/29
    "xRAG: RAGでLLMに渡す関連文書をベクトル形式のままに渡すことで1トークンで済ませよう / コンテキストを圧縮できるのでRAGの回答速度が早くなる / どうやってこの変換器を作るのかが論文で説明"
  • ChatGPT+LangChain| Elasticsearch公式ドキュメントのQ&Aを作ってみる

    はじめに この記事は、情報検索・検索技術 Advent Calendar 2023 の 11日目の記事です。 記事では、最新のElasticsearchの公式ドキュメントの内容を元にQ&Aを行うチャットボットを、LLMとLangChain、さらには、Elasticsearchのベクトル検索機能を使って作成したので、実現方法や利用した技術について紹介します。 また、RAGを使ったWikipediaのQ&Aを作った話が、同アドベントカレンダーの4日目の記事で紹介されているので、気になる方はご参照ください。 概要 LLMの問題点 OpenAIが提供するGPTや他の大規模言語モデル(LLM)の登場によって、簡単な質問に対しても優れた回答を得られるようになり、知識の取得や整理が容易になりました。一方で、2023年12月現在、一般的に提供されているGPTのバージョン3.5では、2022年1月以降の情

    ChatGPT+LangChain| Elasticsearch公式ドキュメントのQ&Aを作ってみる
    sh19910711
    sh19910711 2024/05/27
    "公式ドキュメントの内容を元にQ&Aを行うチャットボット / unstructured: LangChainでHTMLファイルを読み込むために利用 / decouple: 環境変数を読み込むために利用 + dotenvよりもキレイに書けたりセキュアな書き方もできる" 2023
  • Python: Annoy の近似最近傍探索 (ANN) を試す - CUBE SUGAR CONTAINER

    今回は Spotify の作った近似最近傍探索 (ANN: Approximate Nearest Neighbor algorithms search) ライブラリの Annoy を試してみる。 ANN は k-NN (k-Nearest Neighbor algorithms search) の一種で、厳密な解を追い求めない代わりに高いスループットが得られる。 ちなみに ANN のライブラリごとのベンチマークを公開している Web サイトがある。 その中でいうと Annoy は大体のベンチマークで真ん中くらいの位置にある。 その代わり Annoy はインストールが簡単という利点がある。 ANN-Benchmarks 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.14 BuildVersion: 18A391

    Python: Annoy の近似最近傍探索 (ANN) を試す - CUBE SUGAR CONTAINER
    sh19910711
    sh19910711 2024/05/22
    "Annoy: k-d tree を元に探索を高速化 + 大体のベンチマークで真ん中くらい / AnnoyIndex: 次元数と距離の計算に用いるメトリックを指定 / 近傍数と共に距離も手に入れたいときは include_distances オプションに True を渡す" 2018
  • 近似最近傍探索ライブラリHnswlibのRuby bindingを作った - 洋食の日記

    はじめに 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

    近似最近傍探索ライブラリHnswlibのRuby bindingを作った - 洋食の日記
    sh19910711
    sh19910711 2024/05/10
    "Hnswlib: C++で書かれたHierarchical Navigable Small World graphsによる近似最近傍探索ライブラリ / ベンチマークではAnnoyよりも良い検索性能を得ているので、Annoyでイマイチなときに使ってみると良いかも" 2021
  • RAGを用いた社内情報検索システムを導入した話

    はじめに こんにちは、助太刀バックエンドチームの市川です! 助太刀では、2024 年 2 月に以下の生成 AI の活用した社内情報検索システムに関するプレスリリースを発信しました。 助太刀、生成 AI を使った社内 Wiki を開発。生成 AI の活用により社内業務の効率化を強化 今回は、その社内情報検索システムに関する LLM(大規模言語モデル)、RAG(Retrieval-Augmented Generation) を用いた検索システムの構築について紹介したいと思います。 上記プレスリリースにも記載がありますが、主に社内業務効率化を目的とし開発・導入しました。 RAG とは RAG(Retrieval-augmented Generation) とは、質問やプロンプトに対して出力する答えを作る過程で、あらかじめ用意された外部データベース内の既存情報を参照(Retrieval)することで

    RAGを用いた社内情報検索システムを導入した話
    sh19910711
    sh19910711 2024/05/09
    "社内ドキュメントの保存に基本的に Google Drive を利用 / Kendra Google Drive コネクタ: 動作が不安定 / 人事関連の迅速な情報アクセス: 結婚に伴う人事関連の手続き => 必要なフォームと詳細な申請プロセスが直ちに提供"
  • Slack経由でRAGにコードレビューを依頼するBotを作成 〜 AWS SAM編 - Qiita

    はじめに 前回の記事では、リーダブルコードの原則に従ったコードレビューを自動化できないものか・・と考えた結果、『RAGにリーダブルコードの原則を取り込ませてコードレビューをしてもらおう!!』という検証をしてみました。 検証環境の構築は AWSマネジメントコンソール を使用していましたが、今回は AWS SAM を使用して、より簡単に環境構築する方法の解説を行います。 使用するリポジトリは以下になります。 事前準備 リージョン切り替え 全ての手順は「東京リージョン」で実施することを前提としているため、AWSのマネジメントコンソールからリージョンを「東京」に変更してから手順を進めてください。 Cloud9 ローカルマシンの環境を汚さないために、Cloud9 を使用して環境構築を行います。Cloud9 には、今回の作業に必要な以下のツールが事前にインストールされているため、環境構築がスムーズに行

    Slack経由でRAGにコードレビューを依頼するBotを作成 〜 AWS SAM編 - Qiita
    sh19910711
    sh19910711 2024/05/09
    "リーダブルコードの原則を取り込ませてコードレビューをしてもらおう / Cloud9: AMTCで付与された一時クレデンシャルの権限では IAMロールやIAMポリシーに対するアクセス権限が制限"
  • StepFunctionsとCommandR+でコードもプロンプトも書かずにRAGを作る - Qiita

    "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+ を指定し、モデルパラメーターを以下の様にします。

    StepFunctionsとCommandR+でコードもプロンプトも書かずにRAGを作る - Qiita
    sh19910711
    sh19910711 2024/05/05
    "Command R+ の登場で「プロンプトを書かないRAG」が実現できるようになった / 入力を元にRetrieverの検索クエリを生成 + ループしてナレッジベースを呼び出す + 検索結果(複数件)が格納されているのでまとめてdocumentsに設定"
  • Cohere Command R+ のクエリの書き換え機能を確認する - Qiita

    Cohere の Command R+ は RAG に最適化しているとかなんとかで幾つかの機能があります。 このうち、クエリの書き換え機能について動作を確認していきます。 Command R+とは? 以下の記事をご参照。 RAGのクエリの書き換えとは? RAGを実装する際に、ユーザーからのクエリ内容をそのままRetrieveに使うと検索効率上あまりうれしくないのは良く知られた事です(多分)。 Amazon Bedrock + Anthropic Claude 3 開発体験ワークショップ RAG編 次のステップ これを回避する為には抽象化して書くと以下のような処理が必要で、Command R+は以下の「①」「③」に適した生成モードを具備しています。 ① ユーザーの問い合わせを Retrieve に適した形に書き直す(正しく書くと、Retrieveに適したクエリを生成する) ② Retriev

    Cohere Command R+ のクエリの書き換え機能を確認する - Qiita
    sh19910711
    sh19910711 2024/05/05
    "クエリ内容をそのままRetrieveに使うと検索効率上あまりうれしくない / 「クエリの書き換え用のプロンプトを自分で考えたくない」場合は、クエリ書き換えのみCommand R+を使用するのもまたアリ"
  • [アップデート] Amazon Bedrockで新モデル「Cohere Command R/R+」が利用可能になったので、RAGで使ってみた | DevelopersIO

    [アップデート] 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 の最も強力な生成言語モデルで

    [アップデート] Amazon Bedrockで新モデル「Cohere Command R/R+」が利用可能になったので、RAGで使ってみた | DevelopersIO
    sh19910711
    sh19910711 2024/05/03
    "Knowledge bases for Amazon Bedrock: 複数のデータソースを指定できる / PDFファイルをS3バケットに配置して、ナレッジベースのデータソースに指定 / 検索のみを実行するretrieve APIが用意されている"
  • PandasのData FrameとElasticsearchのindexを相互変換する - Qiita

    はじめに Elasticsearchの特定のインデックスにサンプルデータを投入したい。でも手元にあるのはキー項目は共通な別々のCSVファイル。えーこれ全部手でマージすんの? それかスクリプト書く? めんどくさ。。 そんな経験みなさんにもありますよね? そんな時、(結局Pythonスクリプトは書きますが)Elandを使うとPandasのData FrameをそのままElasticsearchとやりとりできるので便利です。というかPandasが便利です。 依存ライブラリ 今回、Pythonのpandas, elasticsearch, elandの各ライブラリを使いますので、インストールされていない場合は以下のコマンドでインストールします。

    PandasのData FrameとElasticsearchのindexを相互変換する - Qiita
    sh19910711
    sh19910711 2024/05/02
    "Eland: PandasのData FrameをそのままElasticsearchとやりとりできるので便利 + 条件を絞り込んで読み込むなどの操作も可能 / Data Frameのindexになっていた日付情報が、ドキュメントIDとして格納されている" 2023
  • Amazon BedrockにCohere Command R と Command R+ が来たよ!RAGがすげーよ! - Qiita

    Amazon BedrockにCohere Command R と Command R+ が来たよ!RAGがすげーよ!AWSragbedrockCohereCommand-R+ GW真っ只中の4/30、Amazon BedrockにCohere Command RとCommand R+がやってきました!!🎊🎊🎊 Command R+はただのテキスト生成の枠を超えたAPIになっています!(と勝手に解釈しています!!) いろいろ特徴がありそうですが、まずは、RAGをやってみました。 なにがすごいの? Command R+のInvoke ModelのBodyが特徴的で、 documentを渡す専用項目があります 。

    Amazon BedrockにCohere Command R と Command R+ が来たよ!RAGがすげーよ! - Qiita
    sh19910711
    sh19910711 2024/05/01
    "BedrockにCohere Command RとCommand R+がやってきました / search_queries_only: 検索クエリの生成に特化したAPI / Command R+: Invoke ModelのBodyが特徴的でdocumentを渡す専用項目があり + レスポンスにはcitationsという項目"
  • Arize Phoenixで始めるお手軽RAG実験管理 - Re:ゼロから始めるML生活

    最近RAGアプリケーションの評価やその管理ツールについて調べることがありました。 今回はRAGアプリケーションでの実験管理に使用できるPhoenixを使ってみたのでそのメモです。 RAGアプリケーションと評価 RAGアプリケーションの評価 Arize Phoenix 類似ツール 使ってみる Tutorial ローカルでの管理 参考文献 感想 RAGアプリケーションと評価 Retrieval-Augmented Generation (RAG)は、LLMに外部の知識ソースからの追加情報を提供することで、LLM自体が知らない知識を補い、より正確で文脈に沿った答えを生成するアプリケーションです。 大まかには下記のような流れで動作します。 ユーザーからのクエリをもとに関連するドキュメントを検索 (retrieve) ユーザーのクエリ、関連するドキュメントを含めた形でプロンプトを動的に作成 (Aug

    Arize Phoenixで始めるお手軽RAG実験管理 - Re:ゼロから始めるML生活
    sh19910711
    sh19910711 2024/04/30
    "RAG: 継続的に改善していくにはRetrievalとGenerationを切り分けて評価を確認することが良さそう / Arize Phoenix: ローカルで使える + 検索関係のモニタリング・可視化機能が他のツールより充実(している気がする)"
  • Cohere Command R+とGPT4, Claude3, Gemini1.5の引用段落抽出精度を比較してみた - CreateField Blog

    はじめに 先日、2024/4/4 CohereからCommand R+という新たなLLM(大規模言語モデル)が発表されました。 Cohereは、Transformerモデルを提唱した論文共同執筆者の人が立ち上げたカナダのAIベンチャー企業のようです。 https://ascii.jp/elem/000/004/192/4192907/ Command R+とは、最大で128Kトークンが処理が可能で、コストはGPT4Turboの3~5倍ほど安いモデルです(Claude3 Sonnetと同等)。 先日、以下の記事にてGPT, Claude3, Gemini別に審査官による特許引用文献段落の再現率の検証を行いました。 ChatGPT, Claude3, Gemini別に審査官による特許引用文献段落抽出の再現率を検証してみた - CreateField Blog Gemini 1.5 Pro AP

    Cohere Command R+とGPT4, Claude3, Gemini1.5の引用段落抽出精度を比較してみた - CreateField Blog
    sh19910711
    sh19910711 2024/04/25
    "Cohere: Transformerモデルを提唱した論文共同執筆者の人が立ち上げたカナダのAIベンチャー / Command R, Command R+にはRAG特化の引用元抽出の機能があり / 適合率: どれだけ誤った生成なしに正解できたかどうか(ノイズが少ないか)"
  • 何故Elasticsearchに32GB以上メモリ割り振るのはNGなのか - 動かざることバグの如し

    その理由を探るべく、我々はアマゾンの奥地へと向かった。 環境 少なくともElasticsearch 2以上はこの記事該当 概要 古事記にも書かれていたんじゃないかってレベルで、「Elasticsearchには32GB以上のメモリを割り当てるべきではない」とよく言われる。ESのオプション設定記事とか見てるとよく書かれている。 が、なぜ32GBなのか、Elasticsearchのヒープサイズに32GB以上を設定するとどうなってしまうのか。 そもそも当なのか 2020年11月15日現在の最新は7系だが、公式ドキュメントを確認してみる。 Important Elasticsearch configuration | Elasticsearch Reference [7.x] | Elastic Set Xmx and Xms to no more than the threshold that

    何故Elasticsearchに32GB以上メモリ割り振るのはNGなのか - 動かざることバグの如し
    sh19910711
    sh19910711 2024/04/25
    "「Elasticsearchには32GB以上のメモリを割り当てるべきではない」とよく言われる / その理由を探るべく、我々はアマゾンの奥地へと向かった / Javaには 圧縮オブジェクトポインター機能 + ヒープサイズが32GB未満が条件" 2020
  • コサイン類似度のいろんな書き方 - どこにでもいるSEの備忘録

    前にこんなことやってました。 www.nogawanogawa.work コサイン類似度の計算を高速化したくなることがちょくちょくあるのですが、「ぶっちゃけどれくらいのスループットが出せるもんなの?」というのが気になったので完全に興味位でやってみます。 コサイン類似度 定義と素朴なpythonでの実装 コサイン類似度の2つの計算パターン 諸条件 2つのベクトルの配列間ですべての組み合わせのコサイン類似度を計算 baseline numpy sklearn xlr8 pytorch jax Numba 実行速度結果 2つのベクトルの配列間で同じインデックスの組み合わせのコサイン類似度を計算 baseline numpy jax Numba 実行速度結果 使用したコード 参考文献 感想 コサイン類似度 定義と素朴なpythonでの実装 コサイン類似度は下記のような式になります。 これがなんの

    コサイン類似度のいろんな書き方 - どこにでもいるSEの備忘録
    sh19910711
    sh19910711 2024/04/19
    "コサイン類似度の計算を高速化したくなることがちょくちょくある / xlr8: 内部実装を見る限りIntel MKLを使用して高速化しているようです / 総合的にはNumba + 型変換が不要な状況であれば、計算自体はjaxが最も高速"
  • RAGの性能を高める「Self-RAG」を3分で理解する

    記事では、よく聞く「Self-RAG」についてざっくり理解します。軽めの記事です。 はじめまして。ナレッジセンスの門脇です。生成AIやRAGシステムを活用したサービスを開発しています。 この記事は何 この記事は、RAGの新手法として昨年発表された「Self-RAG」の論文[1]について、日語で簡単にまとめたものです。 この論文は「CRAG」[2]など、最近出ている別のRAGアーキテクチャにも影響を与えているので、理解する価値がありそうです。 今回も「そもそもRAGとは?」については、知っている前提で進みます。確認する場合は以下の記事もご参考下さい。 題 ざっくりサマリー RAGの性能を高めるための新しい手法です。ワシントン大学などの研究者によって2023年10月に提案されました。Self-RAGという手法を使うメリットは、回答品質を上げられること、ハルシネーション(幻覚)を減らせるこ

    RAGの性能を高める「Self-RAG」を3分で理解する
    sh19910711
    sh19910711 2024/04/18
    "Self-RAG: ハルシネーションを防ぐ仕組み + ドキュメントを批判的に選別 +「CRAG」など、最近出ている別のRAGアーキテクチャにも影響 / LLMをファインチューニングし文章の生成の途中でreflection tokenを混ぜ込めるようにする"
  • Supabase+pgvector+OpenAI API+Remixで類似度検索を実装してみる

    はじめに こんにちは、健常者エミュレータ事例集の管理人をしているcontradiction29です。 「健常者エミュレータ事例集」は、「個人の属性に寄らず、誰もが暗黙知を投稿でき、閲覧でき、評価できるプラットフォームを作る」をコンセプトに開発が進められているプロジェクトです。以下のリンクからアクセスできるので、よかったら閲覧してみてください。 ユーザーはテンプレートにそって経験を整理し、知識として共有し、自由に評価し、コメントで議論ができます。GPL3.0ライセンスの元、コード自体も公開されています。詳しくは以下のレポジトリをご覧ください。 健常者エミュレータ事例集には、今読んでいる記事と関連した記事を表示する機能が実装されています。例えば、記事事中に料理の味を悪く言うのはよくないの関連記事は以下のようになっています。 ※ 2024-04-12時点です 今回は、この関連記事の推薦機能の裏

    Supabase+pgvector+OpenAI API+Remixで類似度検索を実装してみる
    sh19910711
    sh19910711 2024/04/12
    "Supabase: 様々なバックエンド機能の集合体ですが、その中にマネージドPostgresSQL + pgvectorを利用することができるため、ベクターストアとしての利用が可能 / インデックスを作成することを推奨: USING hnsw (embedding vector_ip_ops)"
  • インターンでRAGシステムの検索エンジンの改善をおこないました - Uzabase for Engineers

    UB Researchチームで2週間の短期インターンをしている梶川です。 現在、UB ResearchではRAGシステム構築に向けた研究を行っており、社内のさまざまなデータを正確に拾い上げるための検索エンジンの開発と評価を行っています。 今回、その検索エンジンに代わるモデルを用いて、実際の検索テキストで検索を実施した結果を報告します。 概要 近年、LLMを用いた文書生成が流行しており、その中でも外部情報を検索し、LLMに追加して生成させるRAGという技術が活用されています。RAGによって、LLMが知らない情報に対して正確な応答を返すことができ、UB Researchでもニュース記事や有価証券報告書などの情報に対してRAGを適用することを考えています。既存の検索エンジンには、国内データで学習されたBERTベースのモデルを用いていますが、今回、最新のモデルであるBGE-M3を用いて、検索を実施

    インターンでRAGシステムの検索エンジンの改善をおこないました - Uzabase for Engineers
    sh19910711
    sh19910711 2024/04/03
    "BGE-M3: 多言語埋め込みモデル + 1テキストに対して3種類の埋め込みを生成 + 日本語の検索タスクに対して、高い性能が報告 / 長いテキストに対して埋め込みを生成する際にメモリ不足になる"
  • 検索システムのフロントを SSR・Remix で作り直した - Unyablog.

    かなり昔に Elasticsearch ベースの検索システム(Heineken)を作っていた。 Elasticsearch で部内 Wiki 検索高速化 - Speaker Deck 特に更新せず数年動かしていたのだけど、サーバーの置き換えに伴って Kubernetes に置きたいよねという話になり、ついでに Elasticsearch も新しくしたいよね、となった結果、現状のフロントエンドだと最新の Elasticsearch では動かないということがわかった。 nonylene.hatenablog.jp フロントエンドの改修が必要なわけだが、ここでフロントエンドの構成を見ると… FlowType create-react-app PureComponent Bootstrap 3 古すぎる!絶対アップデート難しいし触りたくない技術しかない。 フロントまわりの構成を変えたいとずっと思っ

    検索システムのフロントを SSR・Remix で作り直した - Unyablog.
    sh19910711
    sh19910711 2024/03/09
    "fetch の override とかしないでほしい。もっと軽量なものが使いたい / Remix: SSG はやらなくて SSR 専門 + Web standards はいいぞってトップページで主張していて好感度高い"
  • Oramaという検索エンジンでブログ検索を作ってみた

    この記事は、情報検索・検索技術 Advent Calendar 2023の15日目の記事です。 昨年に続き2回目の情報検索のAdvent Calendar参戦です。 今年は、夏にオンライン参加したBerlin Buzzwordsの「The Debate Returns (with more vectors) Which Search Engine?」というセッションでPhilippさんが話題に出したOrama searchという検索エンジンを紹介してみようと思います(Oramaが正式名称なのかな?)。 Oramaという検索エンジン 公式サイトのトップにも記載がありますが、エッジで動作する全文検索&ベクトル検索エンジンというもののようです。 なにそれ?という感じがしますが、オープンソース版のドキュメントを見るともう少しわかりやすい説明になっています。 Orama is a fast, bat

    Oramaという検索エンジンでブログ検索を作ってみた
    sh19910711
    sh19910711 2024/02/24
    "Orama: TypeScriptで書かれた、依存なしで利用できる検索エンジン + エッジで動作する全文検索&ベクトル検索 / tokenize関数を変更できる + 形態素解析ライブラリとして、wakachigakiというライブラリを利用" / 2023