エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

情報検索

日本語埋め込みモデルRuriを使ったBM42 on Elasticsearchと形態素解析器Sudachiによるトークン矯正

Qdrantが開発した新しいスコアリングアルゴリズムであるBM42を簡単に紹介し、それをElasticsearch上で構築する方法とその所感をお話しします。さらに形態素解析器のSudachiを使って類似語展開やトークン修正を行ない、BM42の精度を矯正する方法を試したので…

人名とニックネームが混じった検索の改善

医療系記事サービスの執筆者名の検索を改善したお話をします

ChatGPT Retrieval Pluginに任意のベクトル検索エンジンProviderを実装する

今回はChatGPT Retrieval Pluginがサポートしているベクトル検索エンジンではなく、AWSで利用できる[OpenSearch](https://opensearch.org/) のProviderを実装して、ChatGPTにOpenSearchのベクトル検索を提供する方法を試してみました。

ただのソフトウェアエンジニアが検索エンジニアになるまで

こちらはエムスリー Advent Calendar 2022 Advent Calendar 2022の延長戦31日目の記事です。 エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。検索とGoが好きです。 検索エンジニアってどこで…

Elasticsearch × Bandit Algorithm を使った検索リランキングを最小工数で実現したアーキテクチャ

Elasticsearch × バンディットアルゴリズムで検索リランキングを最小工数で実装したアーキテクチャを紹介します

Slackの絵文字サジェストを機械学習でリバースエンジニアリング ~文字同士のマッチングの学習と高速化~

Slackの絵文字入力サジェストって意外と不思議な挙動をする。普通に部分一致だと思って入力しがちだけど、時々ハッと、あれなんでこの絵文字がサジェストされたんだ?って意外な挙動をすることがある。 例えば上記の会話では、なぜかminorって入力したら"バ…

Rust製パターンマッチングマシンDaachorseを使ってPythonパイプラインを高速化する話

高速なRust製パターンマッチングマシン**Daachorse**をPythonで呼び出して既存の文字列パターンマッチロジックを高速化したお話

検索エンジンPyTerrierを使った日本語検索パイプラインの実装

PyTerrierの紹介とPyTerrierで日本語検索を実装する方法を紹介します。

ElasticsearchのMore like this内部実装とパフォーマンス問題の解決

LuceneのMore like this(MLT)機能のコードリーディングでMLTの実装を理解して、エムスリーで問題になっていたMLTパフォーマンス問題を解決したお話

Cascade Model に適用する Bandit Algorithms の理論と実装

Cascade Modelに多腕バンディットを適用したアルゴリズムを調べたので、Pythonによる実装とともに紹介していきます。

ユーザー投稿型ドキュメントのタイトル多様性を考慮した検索リランキングを試す

エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。好きな言語はGo。情報検索系の話が好物です。今回は多様性を考慮したリランキング手法と実際にPythonで実装を試した話をします。

検索エンジンのABテストで発生するユーザー内相関を突破する

私が検索エンジンのABテストでハマってしまったユーザー内相関の落とし穴を突破する方法を紹介します。

エムスリー AI・機械学習チームのSIGIR'21推し論文を紹介するぜ!

SIGIR'21ワイワイ祭を開催したのでメンバーが担当したセッションごとに推し論文の紹介をします。

検索基盤チームのElasticsearch×Sudachi移行戦略と実践

エムスリー検索基盤チームのSudachi移行の背景とや移行時のプロセスをお紹介します。

Luceneのメモリ上でのインデックス構造とその仕組み

Luceneのインメモリ転置インデックスのデータ構造の仕組みについて紹介します。

エムスリーが技術書典11で新刊を出します

今回技術書典にエムスリーの有志で参加することになりました。近年ホットなRustや機械学習、k8s、検索、ハイパーカジュアルゲームといったワードで、今回も多様な分野・技術について弊社スタッフが執筆いたしました。

分散密ベクトル探索エンジンValdとSentence-BERTを使った類似文書検索を試す

ValdとSentence-BERTを使った類似文書検索を試してみました。

Google AnalyticsのBigQuery Exportを使って検索ログデータ分析基盤を構築した

今回は検索改善タスクのために検索ログデータ分析基盤を構築したお話をします。また他チームとのコミュニケーションで工夫した点もお話できればと思います。

Elasticsearchで関連キーワード機能がどれだけ低コストで実装できるかの旅路

Elasticsearchを使ってどれだけ低コストで関連キーワード機能を実装できるかを試したのでご紹介します。

クエリ修正を考慮した検索評価指標sDCGを使ってユーザーの検索体験を監視をしたい

検索評価指標の1つであるsDCGを使ってエムスリーの検索ログから体験の悪かった検索セッションを抽出してみました。

GiNZAと患者表現辞書を使って患者テキストの表記ゆれを吸収した意味構造検索を試した

Elasticsearchや、GiNZA、患者表現辞書を使った意味構造検索がどのくらい有効かを試したので、概要と実装方法を簡単にご紹介します。

【Lucene コードリーディングから学ぶ Elasticsearch】 ハイライト&フラグメンターの仕組み

エムスリーでは検索エンジンとしてElasticsearchを利用しているのですが、フラグメント機能でとある問題が発生しました。その問題を解決する中でElasticsearch Highlighting の内部的な仕組みをコードベースで調べたので共有します。