エムスリーテックブログ

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

AI・機械学習チーム最強MR(Merge Request)決定戦2023

AI・機械学習チームの(中村@po3rin)です。 今年もこの季節がやってきました。エムスリーAI・機械学習チームの最強MR決定戦のお時間です。 MRとはMerge Requestの略称です。 GitHubでいうところのPR (Pull Request) にあたります。 この記事ではAI・機械学習…

俺が考える最強の「麻雀点数申告練習アプリケーション」を作ってみる ~ Pythonによる麻雀点数計算問題の自動生成と音声による点数申告 ~

Pythonによる麻雀点数計算問題の自動生成と音声による点数申告

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

今回エムスリーでは有志で新刊を携えて参戦します。今回も多様な分野・技術について弊社スタッフが執筆いたしました。エムスリーのギークな面がふんだんに詰まった一冊となります。

Elastic Cloudのデプロイメント管理をTerraform移行する

エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。検索とGoが好きです。 今回はElasticsearchのバージョンをアップグレードする際に、Elastic Cloudのデプロイメント管理をTerraformに移行する…

BigQueryでSendGrid Activityをセキュアに管理する仕組みを構築した

BigQueryでSendGrid Activityをセキュアに管理する仕組みを構築したのでその紹介をします。

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

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

エムスリーが技術書典14で新刊を出すので紹介します!

エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(@po3rin) です。 技術書典14が2023/05/21に開催されます。 techbookfest.org 今回エムスリーでは有志で新刊を携えて参戦します。今回も多様な分野・技術につ…

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

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

cruft実践入門 ~cookiecutter templateの変更に追従する~

最新cookiecutter templateへの追従を楽にできるcruftの紹介と、それをどのように導入したかをお話しします。

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

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

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

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

API on GKE に高速で認証をつけるIdentity-Aware Proxy × Identity Platform

Identity-Aware Platform × Identity Platformによるメールアドレス/パスワード認証をを採用した所感をお伝えします。

自作 Terraform Registry

Terraform Provider Registryを自作する方法を紹介します。

Rust製Elastic Cloud料金監視Bot作った

Elastic Cloudの料金監視BotをRustで作った

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

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

絶対に落とせない!友人の結婚式の余興用アプリケーションをエラーゼロで突破した

エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。検索とGoが好きです。 今回は友人の結婚式の余興用に作ったアプリケーションの実装とエラーゼロで突破するための工夫などを紹介します。

Go1.19に採用されたPattern-defeating Quicksortの紹介

Go

Pattern-defeating Quicksortの論文を読んで実際にGoでどのように使われているかを調べてみました。

GitLab CIのテンプレート基盤を構築した

IaC

チームで利用するGitLab CIのテンプレート基盤を構築してGitLab CIの運用改善を行ったのでご紹介します。

検索エンジン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で実装を試した話をします。

Goによる動的なJSON生成パターンの比較検討~Elasticsearch Query生成機構を求めて~

Go

今回はElasticsearchのクエリ生成を例に、JSON生成パターンをまとめて検討していきます

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

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

LLRを使った複合語分割で医療用語辞書を検索特化させたい

医療用語辞書を検索特化させるために統計的複合語分割を試したお話です

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

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

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

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

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

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

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

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

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

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