惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
N
Netflix TechBlog - Medium
M
MIT News - Artificial intelligence
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
The GitHub Blog
The GitHub Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
GbyAI
GbyAI
博客园_首页
A
About on SuperTechFans
Blog — PlanetScale
Blog — PlanetScale
人人都是产品经理
人人都是产品经理
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏
T
The Blog of Author Tim Ferriss
The Cloudflare Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
How I Built a Personal AI Knowledge Base with Amazon Auro...
HamzaNab-Dev · 2026-06-27 · via DEV Community

HamzaNab-Dev

I built ChatScroll for the AWS H0 Hackathon — an app that
lets you save AI answers as searchable "Scrolls" using
Amazon Aurora PostgreSQL with pgvector for semantic search.

The Problem

Every day people ask AI assistants valuable questions and
get great answers — then lose them forever. Chat history
is linear, unsearchable, and ephemeral. I kept re-Googling
the same questions knowing I had already found the answer
somewhere but couldn't find it again.

The Solution

ChatScroll transforms AI conversations into a personal
knowledge library. Save any AI answer as a "Scroll",
organize it automatically, and find it later with
semantic search.

The Core Technical Challenge

Making search understand MEANING not just keywords. When
you search "blood thinner medication" it should find your
warfarin scroll even though "blood thinner" doesn't appear
in the title.

How pgvector on Aurora Solves This

Amazon Aurora PostgreSQL with the pgvector extension stores
3072-dimensional vector embeddings for every saved Scroll.

When a user saves a Scroll:

  1. The answer text is sent to Google's gemini-embedding-001
  2. The model returns a 3072-dimensional vector
  3. The vector is stored in Aurora alongside the content

When a user searches:

  1. The search query is converted to a vector
  2. Aurora finds the most similar vectors using cosine distance
  3. Results are ranked by semantic similarity
-- Semantic search with threshold
WHERE 1 - (embedding <=> $queryVec) > 0.5
ORDER BY embedding <=> $queryVec
LIMIT 5

Three PostgreSQL Extensions Working Together

What makes Aurora special for this use case is three
extensions working together:

pgvector — stores 3072-dim embeddings, enables cosine
similarity search between vectors

ltree — stores folder paths as dot-separated label trees
(programming.containers), enables subtree queries without
recursive CTEs

tsvector — powers full-text search with ranking via
ts_rank, combined with pgvector for hybrid search

The Dual Database Architecture

I made a deliberate choice to use TWO AWS databases:

Amazon Aurora PostgreSQL for structured data:

  • Scrolls with embeddings
  • Folder hierarchy (ltree)
  • User accounts (Cognito sub)
  • Conversation metadata

Amazon DynamoDB for chat messages:

  • PK: conversationId
  • SK: timestamp#messageId
  • TTL: 90-day auto-expiry
  • PAY_PER_REQUEST billing

This separation keeps Aurora lean for complex queries
while DynamoDB handles the high-volume chat stream.

The Result

Searching "containerization technology" correctly surfaces
the Docker scroll. Searching "blood thinner medication"
finds warfarin — no programming results contaminating it.

Semantic search scoped to the same folder category
ensures results are always relevant.

Try It

Live app: https://chatscroll.vercel.app
AWS Architecture: https://chatscroll.vercel.app/aws-showcase

I created this content for the purposes of entering
the AWS H0 Hackathon.

H0Hackathon #AWS #Aurora #pgvector #Vercel #NextJS #H0Hackathon