マガジンのカバー画像

Carat活動ストーリー

76
「AIジョブサーチ」「求人Hub」「GLIT」などを運営する株式会社Caratのnoteをまとめたマガジンです。 https://www.caratinc.jp
運営しているクリエイター

#テックブログ

大量の画像を高速で取得してS3とDBに保存する

こんにちは、求人Hubでバックエンド兼インフラを担当している川口( @kawasystem )です。 今回は求人Hubで利用している大量の画像を高速で取得してS3に保存する仕組みを紹介したいと思います。 背景求人Hubでは、1日数十万件の求人データを取り扱います。当然、数十万件以上の画像URLを出稿企業様から頂戴するのですが、この画像URLから画像を取得し、掲載企業様に提供する時は求人HubのCDNにアクセスされるように画像URLを提供します。 どの様に処理するのか数十

Poetryのプロジェクトから未使用のパッケージを一括削除する🗑️

こんにちは、Caratの斎藤( @saitoxu )です。 今回は、Poetryで管理しているPythonのプロジェクトから「入れてるけど実際は未使用のパッケージ」をまとめて削除する方法について紹介します。 背景CaratではAIジョブサーチというLLMを使った対話型求人検索サービスを開発・運営しています。 AIジョブサーチはAPIをPythonで書いており、Poetryで必要なパッケージを管理しています。 会社としても自分自身としてもLLMを本格的に使った最初のプロダ

OpenAI gpt-4o でzero shotで異常検知(Anomaly Detection)を試してみる

はじめに こんにちは、Caratの脇山です。 先日 gpt-4o が発表リリースされました。 性能、速度、料金などがアップデートされましたね。 詳細は他の方の記事や公式のドキュメントにまとまっているので触れませんが、特にトークナイザの改善と音声モデルの処理が一つのニューラルネットで完結できる点に感動しました。 具体的にはトークナイザ改善でより高速、高性能、低価格を実現できる点や 音声が 音声 -> テキスト -> 音声 の3つのパイプラインを通って生成されるのではなく、

求人広告ネットワークサービス「求人Hub」のバッチ処理のしくみ

はじめまして、求人Hubでバックエンドエンジニアをしている高井です。 本記事ではCaratが運営する求人広告ネットワークサービス「求人Hub」のバッチ処理について解説します。 求人Hubとは「適切な求人を必要とする求職者に自然に届ける」をビジョンとし、複数の求人出稿企業の求人データを適切に変換し、それらを複数の求人掲載企業に届け、発生した応募データを出稿企業に移送するためのプロダクトです。 主な利用技術はRuby on Rails, AWS, Terraformになります。

OpenAI gpt-3.5-turboでFine-tuningを試す

こんにちは、Caratの斎藤( @saitoxu )です。 今日、OpenAIのGPT-3.5 Turboをファインチューニングできるアップデートがあったので、公式のドキュメントに沿って早速試してみました。 ファインチューニングのステップざっくり分けると以下の4ステップあります。今回はOpenAI公式のpythonライブラリを使いました。 データセットの準備 データセットのアップロード ファインチューニング ファインチューニングされたモデルを使う 1. データセ

事業別の技術スタック紹介!

こんにちは、Caratの斎藤( @saitoxu )です。 今年初のnoteになります。今年もよろしくお願いします。 今回は事業別で、現在Caratで使っている言語やフレームワーク、ツールなどの技術スタックを簡単に紹介していきます。 弊社では現在、「GLIT」「GLIT Ads」「GLIT Platform」の3事業を運営しているので、以下でそれぞれについて紹介していきます! まとめるとTypeScript (React), Ruby (Rails), Pythonの会社

Design Docはじめました

こんにちは,Caratの斎藤( @saitoxu )です. 少し前からバックエンドの開発チームでDesign Docを導入しました. 今回は導入の背景と,チームでの使い方やテンプレートの紹介,導入してみての良し悪しなんかについて書きたいと思います. Design Docとは?Software Design Documentのことで,実装前に書くソフトウェアデザインに関する文書です. 仕様書やPRD(Product Requirements Document)のようにしっかり

推薦の多様性向上のヒントになるかもしれないBundle Recommendationの紹介

こんにちは,Caratの斎藤( @saitoxu )です. 今回は推薦における「Bundle Recommendation」という少し変わった問題設定について紹介します. 推薦の多様性はじめに,タイトルにある「推薦の多様性とは?」についてです. 推薦は基本的には,ユーザの興味関心とアイテムとの類似度を計算して,高い順に提示するという手法が採られることが多いですが,これだと似たようなアイテムばかりが推薦される問題が発生したりします. たとえばNetflixのようなストリーミ

推薦システムを作るときに気をつけたいデータの「スパース性」

こんにちは,Caratの斎藤( @saitoxu )です. 今回は推薦システムを構築するときに,その手法を決定する判断材料の1つとなる,データの「スパース性」について取り上げます. 推薦システムを構築する際に, スパース性とは何か? スパース性がレコメンドに与える影響について あたりのことがステークホルダーで共有されていると議論を進めやすいと思ったので今回書いてみました. 参考になれば幸いです. スパース性とは?スパース性(sparsity)とは,平たくと言うとデ

GLITにおける求人検索の品質改善②(運用編)

こんにちは,Caratの斎藤( @saitoxu )です. 今回は「GLITにおける求人検索の品質改善①(準備編)」の続きになります. 前回の記事から約2ヶ月が経ち,検索ログが貯まるようになったので今回はそれを分析してみたという話です. 前回載せた検索改善の全体像(図1)でいうと,「オンライン評価」のステップに当たります. どんなデータか最初に検索ログの具体例を示します(図2). たとえば検索ID = 1のログは「ID = 1のユーザが検索条件Aで検索して,1番目に表示

GitHub Packagesのプライベートnpmパッケージを限定公開する方法

こんにちは,Caratの斎藤( @saitoxu )です. 今回は小ネタですが,最近調べたGitHub Packagesのプライベートnpmパッケージを限定公開する方法を紹介します. 背景GLITの開発で培ったノウハウを活かして,年始から求人メディア企業のアプリ開発・運営の支援を行うGLIT Platformというサービスを始めました. 詳しいサービス内容や立ち上げた理由については以下の記事をご覧ください. 現在,最初のプロジェクトの開発を行っているところですが,単な

GLITにおける求人検索の品質改善①(準備編)

こんにちは,Caratの斎藤( @saitoxu )です. 今回はGLITにおける求人検索の品質改善の方法について紹介します. 検索における品質とは何かと言いますと,ユーザがある検索条件で検索を実行したときに,そのユーザが求める検索結果を上位で表示できるかどうかの程度を指します(図1). 最近,この品質改善を定量的に行うための仕組み作りができてきて,これから積極的にやっていこうかという機運が高まってきました. 今回は,自分たちのようなこれから検索の品質改善に取り組むチー

GLIT(グリット)を支えるテクノロジー①

こんにちは,Caratの斎藤( @saitoxu )です. 今回は弊社が運営している転職サービスGLIT(グリット)を支えるテクノロジーについて紹介したいと思います. 今回は初回ということで,なるべく詳細には立ち入らず,大雑把に裏側ではこうやって動いてるんだなあというのを理解してもらえるように書いてみます. エンジニアでない方でも分かるように,なるべく分かりやすく書きますので最後までお付き合いください. 全体像はじめに,GLITの全体像を下図に示します. あまりに一般的