ブックマーク / zenn.dev (3,227)

  • ゼロからRAGを作るならこんなふうに

    どんな人向けの記事? これからRAGを作ってみたい DifyやLangChainにこだわらず、自分で開発をハンドリングしたい ベクトルDBや埋め込みモデルの選定の勘所をサッと知りたい ここではRAGとは何かのような話題は扱いません。 RAGが、ほぼAI活用の現実的な最適解になりつつある LLMは高度な知的タスクを実行可能である。 そんな理解が世界に広まっていく中で、企業は自らが蓄えたデータをLLMに組み合わせてどう活用するか躍起になっています。これからはビッグデータだ!という時代を経ているため、情報インフラに投資した企業も多く、AIでデータを活用する流れはもはや確定路線と言えます。 この問題を解決する手法として一番最初に思いつくのは、モデル自体を改変するファインチューニングです。しかし、ファインチューニングにはいくつかの実用上の問題があります。ファインチューニング自体に専門知識が必要である

    ゼロからRAGを作るならこんなふうに
  • コードレビュー観点表を作った話

    はじめに 今回は、コードレビュー観点表を作った話について少し書かせていただきます。 社内ではGitHubを用いてコードレビューを行っていて、バックエンドの開発においては、コーディングガイドラインも策定しています。 しかし開発において、ガイドラインに書かれている事項が全てではないため、コードレビューを行う際のポイントが自分の中で綺麗に整理しきれていませんでした。 また、ガイドラインの重要なポイントを十分に把握できず、効果的なコードレビューができていない現状がありました。これを改善するために、コードレビューの観点表を作成したことで、コードレビューの質が上がった話についてお話ししようと思います。 問題となっていたこと 一貫性がないレビュー 毎回レビューを行う際に、自分の中のレビューポイントが明確に決まっていなかったため、的確にレビューができていないこと レビューにかかる時間が長い 自分の中でのレ

    コードレビュー観点表を作った話
  • 統計ほぼ初学から 4 ヶ月で統計検定準 1 級受かった話

    この記事は統計検定準 1 級の合格体験記であり、テスト内容の解説記事ではありません。また、この記事での試験に対する勉強の仕方や受験者の属性には一般性が担保されないので、一個人の個人的な見解として解釈してください。 はじめに 今回は統計検定準 1 級に一発で合格できたので、勉強方法・テストの所感をレポートします!最近は増えてきましたが、CBT 形式の準 1 級の体験記は少ないかなと思ったので 1 つの参考になれば嬉しいです! ステータス 経歴: 東京大学理科 2 類 → 工学部マテリアル工学専攻 → 大学院工学系研究科マテリアル工学専攻 (物性に関する研究) 仕事: 株式会社くふうカンパニーで DS をさせてもらってます 統計の勉強経験: 1S の基礎統計のみでほとんど覚えていないので、知識ほぼゼロの状態でした 数学: 東大理系の平均ぐらいだが、大学からはあまり勉強していませんでした (だい

    統計ほぼ初学から 4 ヶ月で統計検定準 1 級受かった話
  • 登壇中にうっかり見せちゃいけないもの見せないようにするための技術

    登壇中にうっかりSlackの通知が出ちゃうみたいなことを避けたいですよね。うっかりを防ぐ対策が集まるスクラップです。

    登壇中にうっかり見せちゃいけないもの見せないようにするための技術
  • ITエンジニアのためのプロンプトエンジニアリング

    ITエンジニアがLLMベースの生成AIを使いこなせるようになることを目指したです。 まずはLLMの仕組みの理解してメンタルモデルを構築し、次に代表的なプロンプトエンジニアリング手法を学ぶことで基礎を固めます。 最後に、ITエンジニアならではのプロンプトテクニックを紹介しますので、応用力を身につけましょう。

    ITエンジニアのためのプロンプトエンジニアリング
  • 【AWS】 代表的なクラウドデザインパターン紹介

    はじめに AWSの豊富なサービス群を活用することで、高可用性かつ高スケール性を実現するシステムを構築することが可能です。 しかし、クラウドサービスの特性を最大限に活かすためには、適切なデザインパターンを理解し、実践することが重要です。そこで今回は、AWSを利用して「高可用性」かつ「高スケール性」を実現するための代表的なクラウドデザインパターンを紹介します。 1. EC2インスタンスを利用した動的コンテンツの配信 動的コンテンツとは? 動的コンテンツとは、ユーザーのリクエストに応じて生成されるコンテンツのことを指します。たとえば、ユーザーのログイン状況や入力内容に基づいて異なるページを表示するようなケースです。 AWSサービスの簡単な解説 Amazon EC2 (Elastic Compute Cloud): スケーラブルなコンピューティングリソースを提供するサービスです。必要に応じて、イン

    【AWS】 代表的なクラウドデザインパターン紹介
  • ゼロからのハイパーバイザ自作入門

    書では、Arm64 CPUアーキテクチャを前提としたハイパーバイザの仕組みをできるだけ分かりやすく解説し、実際にラズベリーパイ4やQEMUで動作するハイパーバイザ(Type1)を自作する方法を解説しています。 ⬛︎ 注意 書はまだ作成中(現在4章を作成中)ですが、モチベーション維持のために公開している状態です(章立てなど今後変わる可能性ありです)。 内容は随時更新していますので、気になる方はウォッチやコメント等をお願いします。 ⬛︎ 学べること ・ハイパーバイザとその仕組みと原理 ・Arm64 (aarch64) アーキテクチャの仮想化支援機構の仕組み ・自作ハイパーバイザの作り方 ⬛︎ ソースコード https://github.com/HidenoriMatsubayashi/evisor ⬛︎ 価格 書は無料にしていますが、役に立った!という方は「バッジを贈って応援」や「いいね

    ゼロからのハイパーバイザ自作入門
  • ソースコードをリポジトリ丸ごとLLMに読んでもらう方法

    はじめに ソースコードをLLMに読んでもらうとき、単一ファイルだと楽なのですが、GitHubのリポジトリのように複数ファイルから構成されるプロジェクトだと困ってしまいますね。 リポジトリごとLLMに読んでもらえるようにいい感じにテキスト化できると良いですね。そんなソフトがありました。しかも2つ。 両方ともほとんどコンセプトは同じです。特に後者のgenerate-project-summaryは使い方も含めて、自分のやりたいことが、すでに開発者の清水れみおさんが以下の記事にまとめていました。 なので、あんまり書く必要ないのですが、せっかくなのでgpt-repository-loaderの使い方と、出力したファイルの別の活用方法について書いてみたいと思います。 gpt-repository-loaderでリポジトリをテキストに変換 使い方はREADMEに書いてあります。シンプルなソフトなので、

    ソースコードをリポジトリ丸ごとLLMに読んでもらう方法
  • 技術選定の失敗 2年間を振り返る TypeScript,Hono,Nest.js,React,GraphQL

    技術選定の失敗 2年間を振り返る TypeScript,Hono,Nest.js,React,GraphQL はじめに 新たに書きました。 MySQLを使っても会社は潰れない 久々に記事を書いたのでどうぞお手柔らかに... 私が過去2年間で行った技術選定の成功と失敗を振り返り、その学びを共有したいと思います。 文才無いので淡々と箇条書きでいきます Twitterエンジニア垢作りました。エンジニアのお友達がいません。 @uncode_jp 注意 意見を押し付けるものではありません。ただ建設的な議論は大事だと思う。 自分の意見は明確に、歯切れのよい表現を意識している。人それぞれだよねみたいな感じに逃げたくない。技術選定に結論はある(過激)。 ただし技術選定にはコンテキストがあり、例えばプロダクトのフェーズや組織の事情によって当然結論は変わる可能性がある。 OSSの開発者さん達は偉大ですごい。あ

    技術選定の失敗 2年間を振り返る TypeScript,Hono,Nest.js,React,GraphQL
  • 誰も教えてくれないSIの本質、SIerの世界観

    記事について 国内の IT 業界について、ネット上では「SIer」VS「Web系」の構図がしばしば見られる。記事は前者、SIer の世界観をひとりの当事者として雑多にまとめたものである。記事としては読み物、特にポエムの類。 対象読者 以下を想定する。 ITエンジニアまたはその卵で、 SIerを知らないWeb系の人 SIerに入社した新人や中途入職者 SIerにてSEまたはマネージャーして働いている者 SIerにてSEではないが裏方で働いている者(開発、研究、調査、教育、管理など) 学習や就労の初歩として参考にしてもいいし、議論やキャリアのダシに使っても良いだろう。 筆者について 吉良野すた: https://stakiran.github.io/stakiran/ 国内の大手 SIer に勤めるサラリーマン。現場には出ておらず、裏方で支えてメシをべている。SI にも IT にもさほど

    誰も教えてくれないSIの本質、SIerの世界観
  • Next.jsの考え方

    Next.js App Routerにおける設計やベストプラクティスを、筆者なりにまとめました。

    Next.jsの考え方
  • 空世界 〜HTMLの永遠仕様探訪記、或いは、文字なきsrcにまつわる寥々たる考察について〜

    問題 <img src=""> をブラウザで表示した時、どうなるか知っていますか?わざわざimg要素のsrc属性を空文字列にする機会がないので意外と知らないかもしれません。 もちろん画像は表示されず、(指定していれば)altが表示されます。 img要素のsrc属性を空文字列にすると、リンク切れになることがわかりました!いかがでしたか?(?) そのときHTMLImageElementは JavaScriptでsrcが空文字列のimg要素のDOMインスタンスを確認してみましょう。例として https://zenn.dev/stin を開き、Chrome開発者ツールを使ってsrc属性に空文字列を指定したimg要素を埋め込んでおきます。 そして次のJavaScriptを実行します。 const element = document.querySelector('img[src=""]'); con

    空世界 〜HTMLの永遠仕様探訪記、或いは、文字なきsrcにまつわる寥々たる考察について〜
  • 【React】useMediaQuery は最終手段にしよう

    こんにちは、エンジニアです。 記事ではuseMediaQueryを使うべきではない理由を説明します。 useMediaQueryとは window.matchMediaの判定結果を取得するカスタムフックを指します。 window.matchMediaはCSSでできるメディアクエリの判定をJavaScriptでも可能にするブラウザAPIです。それをReact Hooksと組み合わせることで、宣言的に判定を行えるようなカスタムフックとなります。 過去にuseSyncExternalStoreを使って実装する記事を書いたので参考にしてみてください。 上の記事ではuseSyncExternalStoreの使い道を説明するのが目的だったのですが、Reactのフックとしてメディアクエリを使える、使っても良いと捉えられてしまったようで、題材選びを少し反省しています(?) 以下はユーティリティ系ライブラ

    【React】useMediaQuery は最終手段にしよう
  • terraform importで数年やってきたがImport blockの良さに気づきました

    こんにちは。イオンスマートテクノロジー株式会社(AST)でSREチームの林 aka もりはやです。 Terraformを一定以上扱ってきた方であれば terraform import コマンドを苦労しながら実行した経験があるのではないでしょうか。私自身も5年以上Terraformを扱う中で何度も terraform import を行ってきました。 一般的に terraform import では以下を行います。 実態に合わせてコードを整える 実態を指定するコマンドを組み立てる ステートファイルに取り込む 差分が出たら地道にコードを整えて terraform plan を実行する 4を繰り返して"No changes"となるまでチューニングする これらの作業はTerraform初見では難しく、個人的にTerraform中級者への登竜門として terraform import が試金石のひと

    terraform importで数年やってきたがImport blockの良さに気づきました
  • 2023-24年のKaggleコンペから学ぶ、NLPコンペの精度の上げ方

    LLM関係のコンペがかなり多かったですね。 ベースラインノートブック 最近はほとんどのコンペがHuggingfaceのTrainerを使って学習が行われます(テーブルデータにおけるscikit-learnのような立ち位置です)。ChrisのNotebookは非常にシンプルにまとまっているのでぜひ参考にしてください。 分類(+RAG) 回帰、分類 固有表現抽出 NLP・精度上昇で検討すること データを増やす LLMによるデータ生成 + ラベリング(CommonLit2 1st, DAIGT 1st, LLM Sci Exam 5th, PIIDD 1st) LLMによるデータ生成は必ずしも効果があるとは限らない データ生成方法も現状はベストプラクティスはない Mistral, Mixtral系列でデータ生成がよさそうな感じはする なお、LLMがラベル付けできないタスクでは厳しい印象です TT

    2023-24年のKaggleコンペから学ぶ、NLPコンペの精度の上げ方
  • 無料でも使える便利な生成AIサービス

    生成AIサービス を書いているのに、あんまり使いこなせてない気がする生成AIサービス。 一時期、サブスクに課金し過ぎたことに反省して、慎重になっていたのですが、いつの間にか無料でも結構便利に使えるサービスが増えていたので、あらためてまとめてみました。基的に自分のためのリンク集なのですが、需要あるかもしれないので公開してみます。 なお、主に調べ物とか要約とか情報収集に使うものが中心で、エンタメ系や画像・動画系は除外しています。 ChatGPT 最初は、やはりベタなやつです。ChatGPTを書いているのでポジショントークもあるのですが、自分の中で基準になっているのはChatGPTです。 無料でも、最新のモデルであるGPT-4oが使えたり、Python実行環境であるAdvanced Data Analysis(Code Interpreter)が使えたりするようになっています。GPT-4

    無料でも使える便利な生成AIサービス
  • LLMで学習不要のレコメンドエンジンを実現

    導入 こんにちは、株式会社ナレッジセンスの須藤英寿です。普段はエンジニアとして、LLMを使用したチャットのサービスを提供しており、とりわけRAGシステムの改善は日々の課題になっています。 記事では、LLMを使用したレコメンドエンジン作成のフレームワークについて、簡潔に解説していきます。 サマリー LLMを使用したレコメンドエンジン作成のフレームワーク(以降、「提案されたレコメンドエンジン」)は、Amazonの研究チームによって発表された論文で提唱されました。 このレコメンドエンジンの特徴は、ファインチューニングを利用していないLLMとユーザーの行動(商品のクリックなど)情報を元に、レコメンドの性能を継続的に改善できる点です。ユーザーの行動をもとに、LLMにより関連性の高い商品を推測させることでレコメンドの性能を上げています。 より詳細な解説は以下の記事、もしくは論文を参照してください。

    LLMで学習不要のレコメンドエンジンを実現
  • Terramateで始めるIaC CI/CDパイプライン

    序論 先日IaCをオーケストレーションしてくれるツール、Terramateについて紹介しました。 この時はクイックスタートということでnullリソースを使ってTerramateの動作確認程度のハンズオンを実施しました。 今回は複数のStateファイルで分割され、CI/CDパイプラインの処理に時間がかかるようになったTerraformリソースをTerramateを活用して、変更差分があった場所のみ検知してapplyを実行するCI/CDパイプラインの構築について紹介いたします。 対象読者 Terramateを使ったCI/CDパイプラインの構築に興味がある人 Terraform(OpenTofu)の基礎知識がある人 GitHub Actionsの基礎知識がある人 IaC(Terraform)導入後の課題についておさらい Terramateの概要については私の記事や家ドキュメントを読んでもらえま

    Terramateで始めるIaC CI/CDパイプライン
  • TypeScriptの標準ライブラリで使われているdeclaration mergingのテクニック

    TypeScriptの標準ライブラリとは、TypeScriptに組み込みで備わっている型定義のことです。ECMAScript仕様で定義されているJavaScriptの言語機能に対する型定義が含まれています。また、ブラウザに組み込まれているWeb標準のAPIに対する型定義も含まれています。 TypeScriptの標準ライブラリでは、declaration mergingというテクニックが使われています。皆さんが普段書くアプリケーションコードではあまり使う機会がないかもしれませんが、TypeScriptの型定義、とりわけ標準ライブラリの型定義においては重要なテクニックです。 この記事では、declaration mergingの概要と、TypeScriptの標準ライブラリでどのように使われているかについて解説します。 declaration mergingとは Declaration merg

    TypeScriptの標準ライブラリで使われているdeclaration mergingのテクニック
  • CSSの擬似要素に代替テキストをつける

    こんにちは、株式会社ナレッジワークの@nakajmgです。 今回はChrome 127 betaの機能紹介を見て「こんなのあったの?」となった、擬似要素に代替テキストをつける機能について紹介します。 /で区切って代替テキストが指定できる ::beforeや::afterのcontentプロパティは、/区切りで代替テキストが指定できます。

    CSSの擬似要素に代替テキストをつける