💨

スペックではなく「魂」で繋がる。対人データから「自己変容」を生み、幸福を追求するマッチングPF「ZAX」はじめに

に公開

はじめに

Google Cloud Japan AI Hackathon vol.4 に参加し、価値観の共鳴と相互成長をテーマにしたマッチングプラットフォーム「ZAX(ザックス)」を開発しました。

「年収」や「学歴」といったスペックの合致は、一時的な安心をもたらすかもしれません。しかし、私たちが真に求めているのは、そうした消費的な幸福ではなく、他者との関わりを通じて自分自身がアップデートされていく「自己変容」そのものではないでしょうか?

ZAXは、Google Geminiの高度な推論能力とpgvectorの検索技術を活用し、対人データから新しい自分を発見し、本質的な幸福を追求するためのエンジニアリングです。

まずは、実際の動作デモをご覧ください。

http://www.youtube.com/watch?v=3hJSFaUnL7o

本記事では、この動画で紹介している「エボリューショナリー・ループ(自己変容の循環)」をどのように実装したか、技術的な裏側を解説します。

プロダクト概要:ZAXとは?

ZAXは、ユーザーの内面(エッセンス)をベクトル化し、相互の成長(Growth)を最大化するパートナーをAIが提案するシステムです。

動画でも解説している通り、以下の3つのコア機能で構成されています。

50問の心理診断 × Gemini: 回答から「6次元のエッセンスベクトル」を生成し、Geminiが詳細な分析レポートを作成。

補完性マッチング: 単に似ている人ではなく、「自分を補完し、成長を促す人」を優先検索。

エボリューショナリー・ループ: 対話後のフィードバックをGeminiが解析し、自身のベクトルを更新。

技術スタック (Architecture)

モダンなNext.jsスタックに、Google CloudのAI技術とベクトル検索を統合しました。

システム全体像:Next.jsをBFFとして、Gemini APIとPostgreSQL(pgvector)をオーケストレーションしています

Frontend/Backend: Next.js (App Router), TypeScript

AI Model: Google Gemini Pro, text-embedding-004

Database: PostgreSQL + pgvector

Infrastructure: Cloud Run / Vercel

技術的な創意工夫

動画内で触れた「技術的なこだわり」について、コードレベルで深掘りします。

1. 「補完性スコア」による異質な他者のレコメンド

ZAXの幸福は「快適さ」だけではありません。「心地よい摩擦」こそが成長を生むと考え、類似度が0.5(適度な距離)付近の相手を最大評価するアルゴリズムを実装しました。

// src/lib/rec/engine.ts
export function calculateComplementarityScore(userVec: number[], targetVec: number[]): number {
  const sim = cosineSimilarity(userVec, targetVec);
  const optimalDistance = 0.5; // 似すぎず離れすぎない「成長のスイートスポット」
  
  // ガウス関数により、0.5付近をピークとした成長ポテンシャルを算出
  const growthPotential = Math.exp(-Math.pow(sim - optimalDistance, 2) / 0.1);
  return growthPotential * 100;
}

2. 心理測定の信頼性担保(逆転項目とバリデーション)

AIの分析精度を高めるためには、入力データの質が命です。
ZAXの診断(50問)では、ユーザーが適当に「はい」と答え続ける黙従バイアスを防ぐため、「逆転項目(Reverse Items)」を導入しています。

通常の質問: 「大勢で騒ぐのが好きだ」 (Yes = 外向的)

逆転項目: 「一人で静かに過ごす時間を大切にする」 (Yes = 内向的 = 外向性スコア減)

集計時にこれらのスコアを正しく反転処理し、さらにベクトルの次元数(6次元)が正しいかをバリデーションした上で DB (pgvector) に保存しています。

3. エボリューショナリー・ループ:対人データが自分を更新する

動画の後半で紹介している「対話後の変化」の実装です。
ZAXでは振り返り(Reflection)をGeminiが解析し、現在のベクトルとの「差分(Delta)」を計算します。

// src/lib/gemini.ts
export async function calculateDeltaVector(feedback: string, currentVector: number[]) {
    const prompt = `
    現在のベクトル: [${currentVector.join(", ")}]
    対話フィードバック: "${feedback}"
    
    Task:
    1. 対話を通じてユーザーの価値観にどのような「揺らぎ」や「確信」が生まれたか分析せよ。
    2. それに基づき、6次元ベクトルの「変化量(Delta)」を算出せよ。
    3. 変化後の新しいベクトルをJSONで出力せよ。
    `;
    // ... logic
}

これにより、「誰と会って、自分がどう変わったか」が可視化され、ユーザーは自身の成長にコミットし続けることができます。

Gemini プロンプトエンジニアリングの極意

AIを単なる「ツール」ではなく、ユーザーの成長を促す「導き手」にするために、以下のプロンプト設計を行いました。

ハルシネーションを抑えつつ「深み」を出す

性格分析レポートの生成では、以下の3層の指示構造を採用しています。

ペルソナ定義: 「プロの心理分析官」としての冷徹な観察眼。

共感の注入: 「温かく、かつ断定的な口調」で、ユーザーが自分の特性を肯定できるようにする。

メタ認知の促進: 自分のデータを見て「何を変えたいか」を考えさせる問いかけを混ぜる。

今後の展望

未来への展望:個の遺書から始まる、人類の補完計画
ZAXは現在、静的なベクトルマッチングで動作していますが、私たちの構想はここで終わりません。
私自身、毎日遺書を書くという習慣を持っています。それは死への準備ではなく、今日、自分が何を感じ、何を大切にしたかという純度の高い自己データを記録し、将来的に深層学習で自己分析するためのデータセット作りです。

この思想をZAXに拡張し、以下のロードマップを描いています。

  1. ユーザーごとの独立学習モデル(Personalized LLM)
    現在の分析レポートを超え、ユーザー個人の思考の癖や、日々の遺書(ログ)を継続学習(Continual Learning)する、完全に独立したLLMを一人ひとりに持たせます。
    これにより、ZAXは単なるツールではなく、ユーザーのデジタル・ツイン(もうひとりの自分)へと進化します。

  2. モデル同士による仮想対面シミュレーション
    私のモデルと、あなたのモデルが、本人たちが寝ている間に電脳空間で対話します。
    「もし、この二人が出会ったらどうなるか?」
    モデル同士が無限の会話パターンをシミュレーションし、化学反応(Chemistry)を事前予測。その結果を本人にフィードバックし、さらに現実の行動変容を促すサイクルを回します。

  3. 個から全体への知識蒸留
    各個人のモデルが得た人間関係の失敗と成功のデータを、プライバシーを保護した状態で統合し、ZAX全体のマザー・モデルに学習させます。
    個の成長が全体の知性を底上げし、その恩恵が再び個に還元される。この循環こそが、真の集合知(Collective Intelligence)の獲得です。

  4. BMI(Brain-Machine Interface)時代のOSへ
    言語は、思考の圧縮にすぎません。
    NeuralinkなどのBMI技術が普及する未来において、ZAXは言葉を介さず、脳波や意識レベルで直接他者と共鳴するためのプラットフォームを目指します。
    説明できないけれど、なぜか惹かれる。その直感をエンジニアリングで証明し、加速させること。それがZAXの最終到達点です。

まとめ:ZAXが提示する「ちがう幸福」

従来の効率化を目指すAI活用とは対極に、ZAXは「人間を迷わせ、考えさせ、変容させる」ためにAIを使っています。

対人データに基づき、自分自身へのアップデートをコミットメントしていく。
Google Geminiとpgvectorの組み合わせは、数値化できないはずの「魂の共鳴」を、確かな技術で実装することを可能にしました。

ぜひ一度、デモ動画をご覧いただき、ZAXの世界観に触れてみてください。

Discussion