タグ

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

  • DjangoのTrigramSimilarityで類似度検索 - Qiita

    class Book(models.Model): title = models.CharField(max_length=200) [ "青い空の彼方に", "無限の夢", "夜明けの詩", "心の声を聞いて", "未来への扉", "時の流れに身を任せて", "星降る夜に", "静かな湖畔で", "遠い日の思い出", "秘密の庭", "風のささやき", "月明かりの下で", "終わりなき旅", "虹の彼方へ", "永遠の約束", "海辺の物語", "夢見る頃を過ぎても", "静寂の森で", "希望の光", "忘れられた時間", "草原の風", "季節の変わり目", "夢追い人", "深い森の中で", "流れる雲", "春の訪れ", "夕暮れのメロディ", "思い出のアルバム", "光と影の間で", "新しい世界へ", "儚い夢", "巡り会い", "雪の降る街", "夏の夜の夢", "孤

    DjangoのTrigramSimilarityで類似度検索 - Qiita
    sh19910711
    sh19910711 2024/06/20
    "PostgreSQLで提供されているpg_trgmというモジュールを使って、類似度をもって検索ができる / 普通の検索とは違った切り口で検索ができるので面白い / 英語の方はそれなりに良い結果 + 日本語は不安定"
  • 協調フィルタリングを用いたPythonのラーメン推薦システム - Qiita

    全体の流れ 推薦システムの概要 協調フィルタリングについて データの作成 使用した機械学習モデルをざっくり説明 機械学習モデル間の出力速度と精度の比較 考察とまとめ 1. 推薦システムの概要 今回作成する推薦システムでは協調フィルタリングを用いて、事前に収集したデータ傾向からユーザーに最適なラーメンを推薦させる。 推薦プロセス 選択肢となる合計31枚のラーメン画像(s_0 ~ s_30)の中から好きなラーメン画像を5枚選んでもらう 学習済みの機械学習モデルに選択結果を入れる 機械学習モデルによって推薦候補のラーメン画像(y=0~3)の中から最適なラーメンが推薦される。 ラーメンの詳細 選択肢ラーメン画像(s_0 ~ s_30) 推薦候補のラーメン画像(y=0~3) 2. 協調フィルタリングについて 協調フィルタリングをざっくり説明すると以下の通りである。 協調フィルタリングとは、コミュニテ

    協調フィルタリングを用いたPythonのラーメン推薦システム - Qiita
    sh19910711
    sh19910711 2024/06/18
    "協調フィルタリングを用いて、事前に収集したデータ傾向からユーザーに最適なラーメンを推薦 / 合計31枚のラーメン画像(s_0 ~ s_30)の中から好きなラーメン画像を5枚選んでもらう" 2019
  • ElasticsearchによるLearning To Rank(LTR)入門 - Qiita

    はじめに Elasticsearchではv8.12からLearning To Rankという機能が実装されました。これまでにもコミュニティープラグインでは同様のことが実現できていましたが、今回Elasticが公式にサポートしましたので概要について紹介したいと思います。 検索の良し悪しは主に以下の観点で評価できます。 適合率 / Precision : どれだけノイズが少ないか 再現率 / Recall : どれだけもれなく検索できているか Learning To Rank(LTR)はこのうち適合率 / Precisionを、事前に用意したデータを学習することによって向上させるための仕組みです。 この機能はElasticsearchの外部で機械学習によって作成したモデルを使って実現します。流れとしてはData Frame Analyticsやベクトル検索で実現しているのと同様、Python

    ElasticsearchによるLearning To Rank(LTR)入門 - Qiita
    sh19910711
    sh19910711 2024/06/13
    "検索の良し悪し: どれだけノイズが少ないか + どれだけもれなく検索できているか / Learning To Rank(LTR)はこのうち適合率を、事前に用意したデータを学習することによって向上させる"
  • Python x SQLite3 x sqlite-vec で近似近傍探索をやろうと思ったが...

    2024-06-06 全文検索エンジン Bleve で日形態素解析をおこなう で bleze x kagome が気になってやろうとしたが、どうせなら一捻りしたいなと思い、Goの全文検索ライブラリである blevesearch の最新リリースを眺めていると https://github.com/blevesearch/bleve/releases/tag/v2.4.0 v0.2.4 からvector serach が可能に backend は faiss。 テンションが上ったので、最初は、kagome x blevesearch x ANN の構成で vector indexing, query のベクトル化もGo 言語かつ検索サーバーを運用しないで完結する構成による近似近傍探索をやろうと思っていた。。。が、文章をベクトル化するお手軽な方法(Python だとが Go で見つけられなか

    Python x SQLite3 x sqlite-vec で近似近傍探索をやろうと思ったが...
    sh19910711
    sh19910711 2024/06/10
    "sqlite-vss: 問題を抱えていたらしく、それを解決するために同じ開発者によって後継が作られ (sqlite-vec) / blevesearch: Goの全文検索ライブラリ + v0.2.4 からvector serach が可能に backend は faiss"
  • LightFMで前処理・学習から予測・評価・潜在表現の取得までやってみる - 宇宙 日本 世田谷 機械学習

    ロゴがかっこいい、、、 概要 こちらのLightFMを実際にMovieLensのデータを使って一通り動かしてみます。 github.com 元になっている論文はこちらです。 arxiv.org 細かい論文の内容に関しては以下の記事でまとめています。 nnkkmto.hatenablog.com また、動かすことが目的であるため精度に関してはこの記事では考えません。 概要 論文概要 流れ 使用するデータセット 使用したスクリプト lightfm.data.Datasetを用いた前処理 概要 dataframeからの変換 encoderの生成 datasetのビルド mappingの取得 連続値を入力とする場合 学習 潜在表現の取得 各種featureの潜在表現 user, itemの潜在表現 予測 既存user, itemに対する予測 新規user, itemに対する予測 predict_r

    LightFMで前処理・学習から予測・評価・潜在表現の取得までやってみる - 宇宙 日本 世田谷 機械学習
    sh19910711
    sh19910711 2024/06/10
    "LightFM: 手軽にFactorization Machines系モデルを使える + user, itemのメタデータに関してもMatrix Factorizationのように類似度を元にした潜在表現の学習 + cold-start問題に対処" 2020
  • ランク学習のListNetをChainerで実装してみた - Qiita

    はじめに ランク学習 (Learning to Rank) の手法である、ListNetをChainerで実装します! 記事は、Chainer Advent Calendar 2016 7日目です. 手法の説明 まず、ランク学習については、Advent Calender 5日目でsz_drさんが素晴らしい記事を書いているので、是非そちらをご覧ください。 時間のない方のために一言で言うと、「1セット(クエリ)の中に複数データがあり、それらに相対的な尺度が与えられたときに、教師付きの条件で順序付けを学習する」問題です。ラベルがクエリ間で絶対的な数値を取らないことが普通の教師付き学習との差になります。 RankNetとの違い ニューラルネット+ランク学習で多くのの方が真っ先に思い浮かべるRankNetだと思います。実は、ランク学習の定式化方法は複数あり、RankNetはpairwise、Lis

    ランク学習のListNetをChainerで実装してみた - Qiita
    sh19910711
    sh19910711 2024/06/06
    "ランク学習の定式化方法は複数あり、RankNetはpairwise、ListNetはlistwiseな手法 / PPD: データの各並び順 (permutation) の起こりやすさを確率分布にしたもの + データごとのスコアから計算" 2016
  • 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