{
  "session": {
    "sessionId": "sess-rrf-fusion",
    "projectDir": "/home/dev/projects/csb-web",
    "cwd": "/home/dev/projects/csb-web",
    "gitBranch": "feat/search",
    "title": "RRF-Fusion fuer hybride Suche",
    "summary": "Keyword- und Vektor-Treffer per Reciprocal Rank Fusion zu einer Liste verschmolzen.",
    "tags": [
      "demo"
    ],
    "firstTs": "2026-06-24T14:20:07.397Z",
    "lastTs": "2026-06-24T14:21:07.397Z",
    "nMessages": 2,
    "nPrompts": 1,
    "lastRole": "assistant"
  },
  "messages": [
    {
      "uuid": "sess-rrf-fusion-msg-0",
      "role": "user",
      "ts": "2026-06-24T14:20:07.397Z",
      "text": "Wie fusioniere ich Postgres-FTS-Treffer und pgvector-Treffer fair, wenn die Scores nicht vergleichbar sind?",
      "content": [
        {
          "type": "text",
          "text": "Wie fusioniere ich Postgres-FTS-Treffer und pgvector-Treffer fair, wenn die Scores nicht vergleichbar sind?"
        }
      ]
    },
    {
      "uuid": "sess-rrf-fusion-msg-1",
      "role": "assistant",
      "ts": "2026-06-24T14:21:07.397Z",
      "text": "Reciprocal Rank Fusion: nimm nur die Raenge, nicht die Roh-Scores. score = sum 1/(k + rank) ueber beide Listen, k um 60. Dedupliziere auf einen stabilen Key. So mischen FTS-ts_rank und Cosine sauber, ohne Skalen-Normalisierung.",
      "content": [
        {
          "type": "text",
          "text": "Reciprocal Rank Fusion: nimm nur die Raenge, nicht die Roh-Scores. score = sum 1/(k + rank) ueber beide Listen, k um 60. Dedupliziere auf einen stabilen Key. So mischen FTS-ts_rank und Cosine sauber, ohne Skalen-Normalisierung."
        }
      ]
    }
  ]
}