bepro

RAG環境の検索精度を高める!プロンプト設計と改善テクニック

あなたが作ったRAG環境、思ったよりも検索結果が的外れで「これじゃ使えない」と感じたことはありませんか? pgvectorにデータを入れても、肝心の会話で意図通りに参照されず、まるで無関係な情報を答えてしまう。あるいは、せっかく検索された情報がプロンプトにうまく組み込まれず、AIが曖昧にごまかす返答を返す…。 これは多くの人が最初に直面する壁です。では、なぜ精度が出ないのか?原因は「Embeddingの扱い」「検索の閾値」「プロンプト設計」の3つにあります。 ベクトル検索は強力ですが、正しくチューニングし ...

【Linuxの基礎知識】df / duコマンドによる容量解析とncdu・iotopでの応用監視

Linuxを使っていて「ディスク容量が足りない」と突然言われた経験はありませんか。 サーバーの運用では、気がつかないうちにログやファイルが溜まり続け、ある日いきなり容量不足でシステムが動かなくなることがあります。 そのときに役立つのが「dfコマンド」と「duコマンド」です。では、この2つのコマンドはどう違うのでしょうか。 dfはシステム全体のディスクの空き容量を確認するのに便利ですが、どのディレクトリが大きな容量を使っているのかまでは分かりません。一方でduはディレクトリやファイル単位での容量を確認でき、 ...

【Linuxの基礎知識】nmapの使い方とセキュリティ確認の実践

あなたのLinux環境は本当に安全でしょうか。 サーバーを運用していると、外部からどのポートが開いているのか、どんなサービスが稼働しているのかを確認する機会が必ず出てきます。 しかし、「具体的にどう調べればいいのか」と立ち止まる方も多いのではないでしょうか。そこで登場するのが、ネットワーク調査の定番ツールであるnmapです。 nmapは単なるポートスキャナにとどまらず、サービスの種類やバージョン、場合によってはセキュリティホールの有無まで調査できる強力な機能を備えています。 システム管理者やセキュリティ担 ...

【Linuxの基礎知識】psコマンドの実践活用|プロセス管理の第一歩

Linuxで作業をしていて「今動いているプロセスは何だろう?」と疑問に思ったことはありませんか。 サーバーが重くなったとき、アプリケーションが反応しなくなったとき、原因を探るためにまず知っておくべきがプロセス管理です。 その最初の一歩として役立つのが、psコマンドです。普段なんとなく使っている人も多いかもしれませんが、実はオプションの組み合わせ次第で「誰がどのプロセスを動かしているのか」「どれくらいのCPUやメモリを消費しているのか」まで細かく把握できます。 システム管理や障害対応に直結するコマンドだけに ...

LMStudioをAPIサーバーとして利用|Embedding・GPTモデルを呼び出す仕組みを構築

普段はGUIで操作しているLMStudioを、もしAPIサーバーとして使えるようにしたらどうなるでしょうか?EmbeddingモデルやGPTモデルを外部から呼び出せるようになれば、手元の環境を一気に“自前のAIサーバー”として活用できるのです。これは商用クラウドに頼らず、Mac miniのような個人環境でも本格的なRAG処理を動かせることを意味します。 通常、AIモデルを扱うには重いライブラリを組み込んで複雑なコードを書く必要がありますが、LMStudioをAPIサーバーとして稼働させれば話は別です。HT ...

Discord Botで作るRAG環境|pgvectorとLMStudioを活用した会話システム実装

普段のDiscordでの会話が、そのままAIとの知識検索に繋がったら便利だと思いませんか?今回の記事では、pgvectorとLMStudioを組み合わせて、RAG環境をDiscord Botに実装する方法を解説します。 背景として、Discordは閉域網でも利用でき、インターフェースが洗練されているうえにUIとしての実績も十分。PC・タブレット・スマートフォンといった環境を選ばず操作がわかりやすく、履歴を遡って終えることができるため1スレッドの限界に縛られません。また、特定の目的に対応したコミュニティを作 ...

【Linuxの基礎知識】sarコマンドでサーバー性能を長期監視する方法

「サーバーが重いけど、原因がどこにあるのか分からない…」そんな経験はありませんか? CPUなのか、メモリ不足なのか、それともディスクI/Oやネットワーク帯域の問題なのか・・・ サーバーの性能トラブルを突き止めるには、瞬間的な状態ではなく、時間の経過による変化を追いかけることが重要です。そんなときに役立つのが「sarコマンド」です。 sarはLinuxに標準的に導入されることが多い「sysstat」パッケージに含まれており、CPUやメモリ、ディスク、ネットワークといったリソース利用状況を定期的に収集・記録し ...

【Linuxの基礎知識】vmstatとiostatでボトルネックを見抜く

Linuxサーバーの動作が遅いと感じたとき、あなたはまず何を確認しますか? プロセス一覧を眺めたり、topコマンドでCPU使用率を見たりすることは多いでしょう。しかし「遅い原因がCPUにあるのか、メモリ不足なのか、それともディスクI/Oにあるのか」を一度で判断するのは意外と難しいものです。 そんなときに役立つのがvmstatとiostatという2つのコマンドです。vmstatはCPUやメモリ、プロセスの状態を、iostatはCPUとストレージI/Oの状況を数値化して表示してくれるため、サーバー全体のどこに ...

Embeddingでテキストをベクトル化|pgvectorに保存して検索可能にする手順

「AIと会話していて、前に話したことを覚えていないことにストレスを感じませんか?」 「同じ質問を繰り返したり、前の答えを踏まえていない応答にがっかりしたことはありませんか?」 その原因は、AIが会話履歴を“記憶”として保持できない仕組みにあります。そこで登場するのが RAG(Retrieval-Augmented Generation)。過去の会話をEmbeddingモデルでベクトル化し、検索して取り出すことで、あたかも記憶を継承しているような自然な対話が実現できるのです。 この記事では、このRAG環境で ...

【Linuxの基礎知識】dmesgの読み方とハードウェアトラブル対応

Linuxサーバーを運用していて「突然ハードディスクが認識されない」「USB機器が動かない」「ネットワークカードが反応しない」といったトラブルに出くわした経験はありませんか? そんな時に頼りになるのが、カーネルが出力するメッセージを確認できるコマンド dmesg です。 Linuxが起動してから認識したハードウェアや、ドライバの読み込み状況、エラーの詳細までもがここに集約されており、システム管理者にとってはまさに一次診断の必須ツールといえます。 とはいえ、表示されるログは大量で英語メッセージも多く、初心者 ...

PostgreSQL16+pgvector導入手順|個人環境にベクトルDBを構築する方法

PostgreSQLにpgvectorを導入すると、ローカル環境でもベクトル検索が可能になります。 これはRAG(Retrieval Augmented Generation)における「記憶保存」の基盤となり、AIに会話の履歴を保持させるための必須要素です。 この記事では、RHEL系LinuxにPostgreSQL16とpgvectorを導入し、Macからも接続できる個人向けの分散構成を構築する手順を解説します。 なぜpgvectorが必要なのか pgvectorはPostgreSQLにベクトル型を導入す ...

VPSにJavaアプリの開発環境を自動で構築する方法:Apache+Tomcat+PostgreSQL

開発環境を整えるとき、いきなり細かい設定から入ってしまうと、構築の全体像が見えず混乱しがちです。本シリーズでは、5つのパートに分けて順を追って開発環境を構築していきます。 この構成は、構築に必要な順序でステップを並べ(クラウド → Web → AP → DB → 保守)、各パートは独立して読めるようにし、スクリプトによる自動化を前提に操作負担を極力減らす方針に基づいています。ただし、手動で対応すべき設定も明示的に解説します。 構築する環境のイメージ 最終的に以下のような構成になります。 Webサーバ → ...

【RHEL系Linux】サーバーの障害検知と自動通知|systemdログ監視の実装例

RHEL系Linux環境でsystemdユニットのjournaldエラーログを常時監視し、差分検知でLINEやメールに自動通知する方法を解説します。 多重起動防止、PID管理、除外パターン設定など実用運用に必須の設計・実装・運用例を網羅します。 概要 Linuxサーバーの安定稼働を維持するには、障害発生時にいち早く検知し、迅速に対応する体制が必要です。本記事では、systemdのjournaldログを監視し、エラーログや警告をリアルタイムに検知してLINEまたはメールで通知する仕組みを構築します。 また、 ...

ORMにはうんざり!第6回:Java共通DBアクセスクラスの実用例で脱フレームワーク

多くのエンジニアが一度は通る道、それがORM(Object-Relational Mapping)によるデータアクセスの自動化です。しかし、実際の開発現場では「ブラックボックス化してわかりにくい」「SQLが思うようにチューニングできない」「結局、素のJDBCに戻した」などの声が後を絶ちません。 本記事では、そうしたORMに限界を感じたエンジニアに向けて、フレームワークに依存しない共通DBアクセスクラス群の“実用的な使い方”をご紹介します。第6回となる今回は、MVCモデルをベースに、現場でよくあるユースケー ...

【Linuxの基礎知識】プロセス管理はもうスクリプト不要?systemdの基本と自動監視設定

「プロセスの自動起動や監視って、複雑なスクリプトを書かないと無理だと思っていませんか?」 systemdを使えば、シェルスクリプトを組まずともプロセスの自動起動・再起動・ログ管理が簡単にできるようになります。これまで cron や watch、あるいは自作スクリプトで面倒な運用をしていた方には、目からウロコの運用方法です。 私がシステム監視を覚えた時代は init.d でした。シェルスクリプトでプロセス監視を組み、ログは /var/log/messages を tail で見張っていたものです。今や sy ...

ORMにはうんざり!第5回:例外の闇を断つ、堅牢なJavaエラーハンドリングとログ設計

業務システムの開発において、例外処理とログ出力は「後回しにされがち」な存在です。しかし、実際の運用現場ではエラーが起きたときにその原因を特定できるかどうかが、システムの信頼性と復旧速度を大きく左右します。特にJavaで開発された中〜大規模な業務システムでは、ログの粒度や例外の扱い方ひとつで、障害対応の工数やトラブルの再発率が激変します。 今回の第5回では、共通データアクセスクラス群のなかでも「例外処理」と「ログ出力」にフォーカスし、どのように堅牢なエラー制御と可視化を設計すべきかを具体的に解説していきます ...

【RHEL系Linux】PostgreSQLを自動インストールするシェルスクリプトの使い方

ジョンとの共存など、多くの作業工程で人為的ミスが発生しがちです。本記事では、PostgreSQLのインストール・削除・確認を1本のシェルスクリプトで自動化する方法を解説します。 特定バージョンの導入から、複数バージョンの共存管理、不要なバージョンのアンインストールまでをスムーズに行える仕組みとなっており、現場の手作業を極力排除した再現性の高い構成になっています。 概要と目的 PostgreSQLを複数バージョンで運用している現場では、バージョンごとのポート設定や、重複インストールの防止、削除時の依存関係な ...

ORMにはうんざり!第4回:ログ出力と例外処理の共通化でJava開発効率を上げる

エンジニアであれば一度は経験するのが「どこでエラーが起きたかわからない」「ログが出ていないから原因が追えない」といった苦痛なデバッグ作業。 第4回では、そんな悩みを解消するための共通ログ出力クラスと例外処理の統一実装について詳しく解説します。 この共通DBアクセスクラス群では、あらゆるSELECT・INSERT・UPDATE・DELETE処理に対して、ログ出力と例外制御が自動で組み込まれているのが大きな特徴です。その中心を担うのが Logger、LogWriter、そして SystemException ...

【Linuxの基礎知識】tcpdumpの使い方と通信トラブルの本質的な見方

ネットワークトラブルが起きたとき、「とりあえずtcpdumpでキャプチャを取ればいい」と言う人は多いですが、実際にはtcpdumpの本質を理解せず、知識だけで“わかったふう”になっているケースが非常に多く見受けられます。 tcpdumpは単なるログ収集ツールではなく、「どこを観測するか」という視点が不可欠なツールです。対象となる通信には必ず送信側と受信側の2地点が存在し、それぞれにtcpdumpを仕掛けて比較することではじめて意味のある解析が可能になります。 それにも関わらず、1台のコンソールだけで状況を ...

【RHEL系Linux】ディスク使用率を自動監視するシェルスクリプトの実装

ディスクの使用率、気づいたときには手遅れになっていませんか? サーバー運用では、容量逼迫によるサービス停止を未然に防ぐことが重要です。 この記事では、あらかじめ定義した閾値を元にディスク使用率を自動監視し、ログに記録するシェルスクリプトの仕組みを解説します。 概要と導入の目的 ディスク容量の逼迫は、サーバー障害の中でも特に予兆を見落としやすく、サービス停止に直結するリスクを持っています。特にバックアップやログ肥大などによる想定外の使用率上昇は、事前に監視しておくことが重要です。本記事では、指定した閾値に基 ...