タグ

searchとpythonに関するsh19910711のブックマーク (17)

  • 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
  • Matrix FactorizationとDeep Matrix Factorization(Keras)でのレコメンド - statsuのblog

    レコメンドの手法である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 レコメンドつ

    sh19910711
    sh19910711 2024/05/10
    "KerasでDeep Matrix Factorization / Deepにするのは簡単 + どの部分をdeepにするかは工夫のしどころ / Matrix Factorizationめっちゃ強い + Deep Matrix Factorizationはポテンシャルありそうだけど、パラメータチューニングしんどい" 2019
  • Vertex AI Agent Builder の検索システムを Python SDK から試してみる

    はじめに Vertex AI Agent Builder で作る検索システム Vertex AI Agent Builder(旧 Vertex AI Search & Conversation)を使用すると文書検索システムが簡単に構築できて、コンソール上のデモ用検索ポータルから検索処理が体験できます。検索キーワードの「意味」を理解して検索するセマンティックサーチを行うので、次のように微妙にタイプミスをしても、こちらの意図を汲み取って検索結果を返してくれます。また、検索結果のサマリーテキストも表示されます。 コンソールの検索ポータルで検索する例 Vertex AI Agent Builder による検索システムは、次のような構成になります。「データストア」と「検索アプリ」の2つのコンポーネントを作成して利用します。 Agent Builder による検索システムの構成図 データストアは、ドキ

    Vertex AI Agent Builder の検索システムを Python SDK から試してみる
    sh19910711
    sh19910711 2024/05/02
    "Agent Builder: Cloud Storage などのデータソースからドキュメントをインポートするとドキュメントの内容を分析して検索に必要な情報を抽出・保存 / discoveryengine.viewer: ACL を設定して検索できるユーザーを制限"
  • 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
  • Pyserini(Faiss)を使ってお手軽Entity検索をやってみた! - Retrieva TECH BLOG

    こんにちは。 リサーチャーの勝又です。 私はレトリバで自然言語処理、とくに要約や文法誤り訂正に関する研究の最新動向の調査・キャッチアップなどを行っております。 今回の記事では、Pyseriniという情報検索の研究で使われるPythonライブラリの簡単な使い方、拡張方法について紹介します。 Pyseriniとは Pyseriniを使ってEntityの検索を実施する Entity検索について Pyseriniの準備について Pyseriniを動かす流れ Encodeを行う Indexingを実施する Searcherを作成する Entity検索してみる まとめ Pyseriniとは 近年、Large Language Model(LLM)の流行に伴い、Retrieval-augmented Language Modelのように、情報検索技術の需要は高まっていると思います。 たとえば、LangC

    Pyserini(Faiss)を使ってお手軽Entity検索をやってみた! - Retrieva TECH BLOG
    sh19910711
    sh19910711 2024/04/27
    "Pyserini: Anserini(Luceneベースの情報検索ツール)やFaissのインターフェイス + BM25のような古典的な手法や、Faissを利用したDense Vectorによる検索、 uniCOILやSPLADEといったSparse Vectorによる検索を動かすことができ" 2023
  • コサイン類似度のいろんな書き方 - どこにでもいる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が最も高速"
  • PyTorchでより深いMatrix Factorization

    10年前のNetflix Prizeで確立された(?)、Matrix Factrizationは多くの場合、SVDというアルゴリズムで解くことができるが、ロジックと数式をぼんやりと見ていたら、Deep Learningでもできるっぽいなと思った。 ググると、Pytorchでの実装をここなっている人[1], Kerasでの実装を行っている人[2]を見つけることができた。[2]によると、内積を計算することを最終目標とするのであるが、どうやらその内部は非線形であってもいいらしく、表現力を高めるような深いネットワークの構成でも性能がでるようである。 Pytorchで実装を行い、簡単に性能をそれなりに出せたので忘備録として残しておく。 Matrix Factorization気持ちはこうで、実際にはすべてを同一に最適化できないので、ミニバッチを切り出して順次学習していく 一つのデータセットの粒度は、

    PyTorchでより深いMatrix Factorization
    sh19910711
    sh19910711 2024/02/18
    "Matrix Factrization: SVDというアルゴリズムで解くことができる / 内積を計算することを最終目標とするのであるが、どうやらその内部は非線形であってもいいらしく / 深いネットワークの構成でも性能がでる" / 2019
  • 年始からお手軽ベクトル検索を作る - kurainの壺

    あけましておめでとうございます。 今年は、もうちょっとblogを書こうかなということで、三が日のうちに1つ出してみようと思います。 さて、2023年はLLMの利用と同時にベクトル検索が急に利用されるようになった年でした。 Retrieval-Augmented Generation(RAG)をみんな使い出したのと、OpenAIembedding APIの性能が思った以上に良かったことが主な理由だと思います。 ベクトル検索は faiss でもchromaでも、qdrant でも何を使ってもよいと思いますが、numpy を使えば数行で実装できるし性能も悪くないことがわかったので書き残しておきます。 import numpy as np class SimpleVecSearch(): def add(self, ndarray): self._ndarray = ndarray def

    年始からお手軽ベクトル検索を作る - kurainの壺
    sh19910711
    sh19910711 2024/01/19
    MLX、知らなかった / "ベクトル検索は faiss でもchromaでも、qdrant でも何を使ってもよい / MLX: apple silicon 向けの numpy 互換ライブラリ + GPU を使って線形代数計算を高速に計算 + numpy を mlx.core に書き換えるだけ"
  • ベクトル検索の高速化アルゴリズムと量子化パラメータの速度・データサイズ・精度の計測 - RAGでの利用時にはtop-N を意識する - A Day in the Life

    最近、文をembeddingsといった特徴ベクトルに変換するユースケースが増えている。そのベクトルから類似ベクトルを探す時に、数千ベクトルならほぼ何も考えなくともよく、数万ベクトル〜になると検索速度を高速化するためHNSW等のANNの近似最近傍探索アルゴリズムを使い、そして数百万ベクトル〜になってくると現実的なデータサイズ収めるために量子化等々を組み合わせた最適化を行うことが多いだろう。 これら類似ベクトル検索のための最適化(HNSW・IVFといったアルゴリズムや量子化)では、検索速度、データサイズ(メモリに乗るか)、精度、三つのトレードオフが発生する。これらトレードオフを踏まえた最適化戦略を考えるのだが、最適化時の正確さの計測結果として recall@10 や recall@100 が掲載されていることを多く見かける。例えばChoose the k-NN algorithm for yo

    ベクトル検索の高速化アルゴリズムと量子化パラメータの速度・データサイズ・精度の計測 - RAGでの利用時にはtop-N を意識する - A Day in the Life
    sh19910711
    sh19910711 2024/01/18
    "faiss の benchs: IVFやHNSW以外の計測や、例えばPCAで次元削減するベンチマークなど、ベクトル検索でこんなことやりたいよう、という計測も結構行われていたりする / faiss.index_factory(d, "IVF2048,PQ64")" / 2023
  • RecBole を使ってレコメンドモデルの挙動の違いを観察する - Qiita

    みなさんこんにちは。 @fufufukakaka です。 この記事は 情報検索・検索技術 Advent Calendar 2021 の 12/17 の記事です。数日遅れていますが... 記事では推薦技術に焦点を当てます。具体的には、今年僕が声を大にして紹介したい RecBole を使った話を書きます。 RecBole とは? 実は会社のブログでも同じような記事を書いたので、この説明部分はそこからそっくりそのまま引用します。 RecBole は中国人民大学・北京大学の研究室が共同で始めたプロジェクトのようで、去年の11月に arxiv に登場しました。今年の8月に提供しているモジュールがv1を迎えて、格的に色々な人が利用するようになったようです。 RecBole 最大の魅力は、上述してきた再現性の難しいレコメンドモデルを統一したインタフェースで実装し、比較を容易にしているところにあります

    RecBole を使ってレコメンドモデルの挙動の違いを観察する - Qiita
    sh19910711
    sh19910711 2022/12/27
    2021 / "MovieLens の方では FactorizationMachine 系は同じコミュニティに属している + FourSquare の方はそうでもない / 感覚的に思っていたことを実際に複数のモデル・データセットで確認できたのは大きな収穫でした"
  • Amazonのデータセットで始める商品検索

    この記事は 情報検索・検索技術 Advent Calendar 2022 の7日目の記事です。 はじめに 今年の夏、Amazonが多言語 (英語スペイン語、そして日語) のラベル付きの商品検索のデータセットを公開しました。 論文: https://arxiv.org/abs/2206.06588 リポジトリ: https://github.com/amazon-science/esci-data 情報検索において商品検索は、ウェブ検索を作りたいという企業より商品検索を作りたい企業の方が多いという意味で、ポピュラーなトピックだと思います。ところが公開データで実験を行おうとするとドメインが違うウェブ検索のデータセットか、ラベルのない商品カタログか、ラベルはあるけど小規模なデータセットかという限られた選択肢しかなく、仕方がないので非公開の独自データセットを作って実験を行うという状況でした。

    Amazonのデータセットで始める商品検索
    sh19910711
    sh19910711 2022/12/07
    "検索システムを賢くしたいという人々の願いがミドルウェアにPythonサポートやcross-languageの機能を追加させて、Pythonを組み込むことが容易に / 来年以降はこのデータセットを使った提案手法がたくさん世に出てくる"
  • 検索エンジンPyTerrierを使った日本語検索パイプラインの実装 - エムスリーテックブログ

    エムスリーエンジニアリンググループ AI機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。検索とGoが好きです。 今回は社内でPyTerrierを採用して文書検索BatchをPythonで実装したので、PyTerrierの紹介とPyTerrierで日語検索を実装する方法を紹介します(日語でPyTerrierを扱う記事は多分初?)。 PyTerrierとは 弊社でのPyTerrier利用 PyTerrierで日語検索 Phrase Queryの注意点 まとめ We're hiring !!! PyTerrierとは Terrierのロゴ PyTerrierは、Pythonでの情報検索実験のためのプラットフォームです。 JavaベースのTerrierを内部的に使用して、インデックス作成と検索操作を行うことができます。基的なQuery RewritingやBM

    検索エンジンPyTerrierを使った日本語検索パイプラインの実装 - エムスリーテックブログ
    sh19910711
    sh19910711 2022/04/27
    "PyTerrier: 情報検索実験のためのプラットフォーム / パイプラインを演算子で構築できるのが特徴 > pipeline = (tfidf % 100) >> bm25 / PandasのDataFrameをそのままインデックスするインターフェースが用意されているので便利"
  • PytorchとElasticsearchで画風検索 - Qiita

    概要 この記事は、情報検索・検索エンジン Advent Calendar 2019の7日目の記事です。 PytorchとElasticsearchで簡単な画像(画風)検索エンジンを作りたいと思います。 目次 画風とは Pytorchを使って、画像から画風ベクトルを抽出 Elasticsearchにデータを格納して、似ている画風画像を検索 結果 (おまけ)Kibanaでデータ確認 という流れで、解説していきたいと思います。(今回の記事では、自分の解釈を入れながら厳密な説明を避け大まかに説明しています。論文の理解や実装について誤りがある場合は、教えて頂けると幸いです。) コードはこちらで公開しています。 そもそものきっかけ (少しポエムっぽいですので、手法が気になる方はこちらはスキップしてください。) 最近、なぜ脳はアートがわかるのか ―現代美術史から学ぶ脳科学入門 という書籍を読みまして抽象

    PytorchとElasticsearchで画風検索 - Qiita
  • 【Python】Scrapy + Digdag でクローラの定期実行 |

    Scrapy プロジェクトを Digdag でスケジューリングしてみたので導入の備忘録を残しておきます。 環境は MacBook Air (13-inch, Mid 2013), OSX 10.11.6 です。 Scrapy は Web Crawling / Scraping Framework で, mechanize や Beautiful Soup といった特定の機能を提供するライブラリと比べると多機能。 基的な機能に加えて robots.txtポリシー, クロール間隔設定, リトライ処理, 並行処理, scrapydによるデーモン化 などもサポートしている。 Installation guide 通りで入ると思うが, 自分の環境 (OSX) では pip で上手くインストールできなかった。[1] 依存ライブラリやバージョンの不一致などの理由から conda でインストールを行う。

  • ElasticsearchとPython使えば生活圏推定を簡単にできる話 - Qiita

    概要 なんか書いてみようということで、Elasticsearchに行動履歴の位置情報を登録すれば、いい感じに利用できる上に、いい感じに可視化もできるという話をします。 前提知識 今回Elasticsearchを利用するので、簡単に紹介。 ElasticsearchはApache Solrとよく比較される全文検索エンジンの一つです。スキーマフリーですべての入出力がREST&JSONになっています。またJavaで実装されています。 詳しくはElasticsearchの紹介と特徴 インストールはyumでもbrewでも簡単に出来ます。利用したい環境に合わせて調べてみてください。 ちなみにElasticsearchのGUIプラグインのelasticsearch-headが便利なので合わせて入れておくと良いです。 Elasticsearchの設定 Elasticsearchを起動できたら、利用するin

    ElasticsearchとPython使えば生活圏推定を簡単にできる話 - Qiita
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • 1