火山 PostgreSQL Serverless × 飞书妙搭:把 AI 装进数据库,一句话唤醒数据智能
ç«å±± PostgreSQL Serverless à é£ä¹¦å¦æï¼æ AI è£ è¿æ°æ®åºï¼ä¸å¥è¯å¤éæ°æ®æºè½
ç«å±±å¼æAgentç¤¾åº 2026-08-18 0 é 读8åéå½ä½ æ³ç¨ AI è¾ å©åæä¸å¡çæ°æ®æ¶ï¼å¦ä½é忍¡åãä½¿ç¨æ¨¡åå¹¶éæå¤§å°å¢ï¼ä½æ¯å¦ä½è¯»åæ°æ®ãæ¬è¿æ°æ®ãè¿è¡æ¨¡ååæååå¨ï¼ä¼æä¸ºè¿ç»´åç®¡çæ°æ®ç大麻ç¦ãç«å±±äºæ°æ®åº PostgreSQL Serverless çï¼ç®ç§°ï¼ç«å±± PG Severless ï¼ æÂ AI Functionï¼ææ¬åéåãæºè½é®çãè¯ä¹æ£ç´¢ã模å管æ§ï¼ 以彿°å½¢å¼è£ è¿æ°æ®åºï¼ä¸å¡å¯ä»¥åå SQL 䏿 ·å¯¹æ°æ®è¿è¡å å·¥ï¼ç»åé£ä¹¦å¦æ AI åç Agent å¼å¹³å°è½åï¼â帮æç¨ AI åæä¸ä¸è¡¨éçæ°æ®âçè¯æ±å¯ä»¥ä»å¤©çº§ç¼©çè³åé级ã
让ä¸å¡æ°æ®ä¼æèï¼ç«å±± PostgreSQL Serverless ç à é£ä¹¦å¦æ
ä»åå¨å¼æå°æºè½å¼æï¼æ°æ®åºå ç AI éç¯
ä¸å¡éææä»·å¼çä¿¡æ¯ï¼å¾å¾èå¨åå§çæ°æ®éï¼å±¥åãè¯è®ºãå·¥åãç¥è¯åºé½ä¸æ¯ç®ååæ®µè½æè¿°æ¸ æ¥çãæ³è¦ææåºå±æ°æ®å¯¹ä¸å¡ççæ£å«ä¹ï¼å¼å ¥ AI çåæè½åæä¸ºä¸å¡çåéï¼ç¶èæ³ç¨å¤§æ¨¡åæ¥åæåºå±æ°æ®ï¼å¾å¾éè¦æ¼è£  ETL + å¤é¨æ¨¡åç½å ³ + åéåºåå¨ + æéä¸å°å¤ä¸ªé ç½® ââ é¾è·¯é¿ãååææ¬é«ãæ²»ç忣ãæè¯ä¹è½åæ¾å°æ°æ®åºéï¼æ¬è´¨ä¸æ¯æè¿åä»¶äºæ¶æå°ä¸æ¬¡ SQLã
AI Functionï¼ç±Â rds_ai æä»¶æä¾ç 6 项åºå
è½å
AI Function æ¯ç«å±±äºæ°æ®åº PostgreSQL Serverless ç æä¾çä¸ç»è¯ä¹å¤ç彿°ï¼ç±Â rds_ai æä»¶ç»ä¸æä¾ï¼é
ååç pgvectorï¼å¯ä»¥è¦çä»åéå â å¬å â éæ â çæå¼é®çç宿´é¾è·¯ã
é¤äºä¸è¿°å½æ°ï¼rds_ai è¿è´è´£æ¨¡åãAPI Key åè°ç¨é¾è·¯çç»ä¸æ²»çï¼è°å¨è°ãè°äºä»ä¹ãææ¬å¤å°ï¼é½è½å¨æ°æ®åºä¸é®å¼æ¥è¯¢ãææé管æ§ã
Serverless 让 AI è´è½½âç¨å¤å°ç»å¤å°â
éè¦ AI æ¥ååæç大é¨åä¸å¡åºæ¯ï¼å¾å¾æ¯å ¸åçèå²å¼è´è½½ï¼æèå£éè¦æ¹éè§£æç®åãå¤§ä¿æé´å¿«éåæè¯è®ºãèæ æ³¢å¨æ¶éä¸åé£é©è¯å«ï¼çæçé«é¢è´è½½åï¼ä¸å¡ååå°è½»éç¶æãç«å±±äºæ°æ®åº PostgreSQL Serverless çæä¾è®©æ°æ®åºèµæºè·éä¸å¡å¼¹æ§ä¼¸ç¼©çè½å ââ é«å³°æ¶èªå¨æåç®åï¼ä½å³°æ¶èªå¨éæ¾ç©ºé²èµæºã
AI Function 为ä¸å¡è§£å³âè½ä¸è½å¨æ°æ®åºå ç´æ¥åææ°æ®âï¼Serverless åæä¾âå¦ä½ç¨æ´ä½çèµæºæ¥åææ°æ®âã两è ç¸åï¼æè®©âæ AI æ¾è¿æ°æ®åºâè¿æ¡è·¯å¾å®ç°çæ£ç坿ç»ã
ä¼ ç»é¾è·¯ vs åºå AI éç¯ï¼ç±å段æ¼è£ æ¶æä¸ºä¸æ¡ SQL å çæºè½é¾è·¯
ä¸é¢æä»¬å°±ç¨ä¸¤ä¸ªçå®ä¸å¡åºæ¯ï¼æ¥è®²è¿°ä¸ºä»ä¹è¦æ AI æ¾è¿ PostgreSQLãå®å¨çå®ä¸å¡éæä¹æè½è¢«ç¨èµ·æ¥ã
åºæ¯ä¸ï¼ä¸å¥è¯æ¾äººæââä»å段çéå°ç»éªçè§£
é£ä¹¦å¦æä¸çäººææºè½æç´¢ï¼ä¸å¥è¯è¡¨è¾¾å¤åè¯æ±
HR å¯ä»¥ç´æ¥è¾å ¥ âæå¸¦å¢éç»éªç B 端产åè´è´£äººâ ãè¿å¥è¯èåå å«çäº§åæ¹åãè¡ä¸ç»éªã管çè½åã项ç®é¶æ®µåå±è¯ä¹ï¼ä»»ä½ä¸å±è¯ä¹ç¨å段çéé½é¾ä»¥å®æ´è¡¨è¾¾ãAI Function è½å¤æè¿ç±»èªç¶è¯è¨æ¡ä»¶ç´æ¥æ¾å°æ°æ®åºä¾§å¤çï¼
ai_embed æå±¥åã项ç®ç»ååæç´¢è¯å¥è½¬æåéï¼ai_retrieve ç¸ä¼¼å¬åï¼é¿å âè¯ä¹ç¸å ³ä½å ³é®è¯ä¸ä¸è´âçåéäººè¢«æ¼æï¼ai_rank 对åé人åç²¾ç»éæï¼ææè´´åâ带å¢é + B 端 + 产åâçæåé¢ï¼ai_query æåé人çå ³é®ç»åæ¹åæäººè¯æ¨èçç±ï¼ä¾å¦âå¸¦è¿ 8 人å¢éãä» 0 å° 1 åè¿ä¼ä¸è½¯ä»¶ãè´è´£è¿é«å¹¶åç³»ç»æ²»çâã
æ´æ¡é¾è·¯çå¼åèµ·ç¹ä¸æ¯æ°æ®åºè¡¨è®¾è®¡ï¼èæ¯ä¸è½® Agent 对è¯ï¼ä¸å¡äººåæç®æ è®²æ¸ æ¥ï¼é£ä¹¦å¦ææç®æ ç¿»è¯æåºç¨ç»æãæ¥è¯¢é»è¾ä¸ AI Function è°ç¨ã
æ¥ä¸æ¥ï¼æä»¬æ¥æ¼ç¤ºå¦ä½è¿è¡äººææç´¢ï¼
1. Step 1ï¼ç¨æ·è¾å ¥ï¼â帮ææè¿äºç®ååèµ·æ¥ãâ
é£ä¹¦å¦æçå¨ä½ï¼æ¢³çäººææ°æ®ãçéåæ®µåé¨é¨æé
ç«å±± PG Serverless æä¾ï¼åºå±æ°æ®çåå¨ãæ¥è¯¢ä¸æéé ç½®
INSERT INTO talents (name, dept, resume)Â
VALUES ('çäº', 'ç åé¨', 'åç«¯ææ¯è´è´£äººï¼å¸¦ 6 人ç åå¢éï¼ä¸»å¯¼æ¯ä»ç½å
³é«å¹¶åæ¹é ä¸ç¨³å®æ§æ²»çã'),
2. Step 2ï¼ç¨æ·è¾å ¥âè¿äºå±¥åå 容é½åä¸å¹é ãâ
é£ä¹¦å¦æçå¨ä½ï¼ä¸ºå±¥å建ç«å¹¶æç»æ´æ°è¯ä¹ç´¢å¼
ç«å±± PG Serverless æä¾ï¼ai_embed çæåéï¼pgvector å¬ååé人
UPDATEÂ public.talents
SETÂ embedding = rds_ai.ai_embed(resume)::vector(1024);
3. Step 3ï¼ç¨æ·è¾å ¥âææ³æç´¢æ¾ä¸ä¸ç¸å ³äººæãâ
é£ä¹¦å¦æçå¨ä½ï¼çææç´¢æ¡ï¼ç»åè¯ä¹æç´¢åæ¡ä»¶çé
ç«å±± PG Serverless æä¾ï¼ai_rank ä¼åæåºï¼ai_query çæå¹é
çç±
SELECT chunk AS resume
FROMÂ rds_ai.ai_retrieve(
  question => 'æå¸¦å¢éç»éªç B 端产åè´è´£äºº',
  source_schema => 'public',
  source_table => 'talents',
  chunk_col => 'resume',
  vector_col => 'embedding'
);
4. Step 4ï¼ç¨æ·è¾å ¥âç¨ç宿èéæ±å è¯ä¸çãâ
é£ä¹¦å¦æçå¨ä½ï¼åºäºçäº§å¿«ç §æèµ·æµè¯é¾è·¯ï¼éªè¯ç»æä¸æé
ç«å±± PG Serverless æä¾ï¼ç产 / æµè¯æ°æ®åæ¯é离ï¼äºä¸å¹²æ°
åºæ¯äºï¼è¯è®ºèªå¨æ´å¯ ââ ä»äººå·¥æ½æ ·å°æç»é¢è¦
æ¶è´¹è è¯è®ºæ´å¯ï¼æ æã主é¢ã严éåº¦ãæ¥æºæ¸ éä¸å±å¯ç
ç¨æ·è¯è®ºè¿å
¥æ°æ®åºä¹åï¼è¿è¥å¸¸è§çåæ³æ¯äººå·¥æ½æ ·ææ  ââ ä½äººå·¥ç模å¼ï¼åªè½è¦ç 5% çè¯è®ºï¼é¿å°¾é®é¢çä¸å°ï¼ç BI æ¥è¡¨åºæ¥æ¶èæ
å·²ç»åé
µãä½¿ç¨ AI Function ç ai_queryÂ å½æ°ï¼å¯ä»¥ç´æ¥å¨åºå
å®ææææ§å¤æãæ
æè¯å«ã主é¢åç±»ã严é度æåãæè¦çæï¼æâææææºå
çµæ¶ä¸¥éåçå°ç«å°ææâè¿æ ·ä¸å¥è¯è®ºï¼è¯å«ä¸ºâå®å
¨ä¸ä¼¤å®³â主é¢ãé«ä¸¥é度é®é¢ï¼èªå¨è¿å
¥é£é©çæ¿ä¸è·è¿ä»»å¡ã
ai_embed ä¸Â pgvector è¿ä¼é¡ºæåä¸ä»¶â表é¢ç®åä½ä»·å¼æé«âçäº ââ æè¡¨è¿°ä¸åãæååä¸é®é¢çæè¯èæä¸ç±»ï¼è®©è¿è¥çå°çæ¯â200 æ¡åç±»åé¦âèé 200 æ¡é¶æ£è®°å½ã
é¢å管çå±ç追é®ï¼å¯ä»¥ç´æ¥äº¤ç»Â ai_retrieve + ai_ragï¼ä¾å¦ âè¿å» 7 天å
³äºå®å
¨é®é¢çè´é¢è¯è®ºä¸»è¦å¨åªäºæ¸ éï¼â ââ æ£ç´¢ãèåãçæçæ¡å
¨é¨å¨åºå
宿ï¼åçé带åå§è¯è®ºæº¯æºï¼å¯ç¹ã坿¥ã坿 ¸å¯¹ï¼ä¸åæ¯é»çç»è®ºã
æ¥ä¸æ¥ï¼æä»¬æ¥æ¼ç¤ºå¦ä½è¿è¡è¯è®ºæ´å¯ï¼
1. Step 1ï¼ç¨æ·è¾å ¥ï¼âå æåå¹³å°è¯è®ºæ´çè¿æ¥ãâ
é£ä¹¦å¦æçå¨ä½ï¼è§£æä¸å¡è¯æ±ï¼AI çæè¡¨ç»æ SQLï¼ç»ä¸å段并å»é
ç«å±± PG Serverless æä¾ï¼å¿«éæèµ·æ°æ®åºæå¡ï¼åå¨åå§è¯è®º
INSERTÂ INTOÂ public.customer_comments (content)Â VALUES
('[è¯è®ºID=A-1001][æ¸ é=çµåå¹³å°A] ææææºå
çµæ¶ä¸¥éåçï¼æ¿èµ·æ¥ç«å°äºææã')ï¼
2. Step 2ï¼ç¨æ·è¾å ¥ï¼â帮æå¤ææ æã主é¢åé£é©ãâ
é£ä¹¦å¦æçå¨ä½ï¼å ç¨å°éè¯è®ºé¢è§ææ ç»æ
ç«å±± PG Serverless æä¾ï¼ai_queryÂ çææ ç¾ã严é度åæè¦
SELECTÂ review,rds_ai.ai_query(
    '为ä¸è¿°è¯è®ºè¿è¡åç±»ï¼åææ£åãè´åãä¸ç«è¿ä¸ç±»', review) AS label
FROMÂ reviews;
3. Step 3ï¼ç¨æ·è¾å ¥ï¼âæç±»ä¼¼çé®é¢èæä¸ç±»ãâ
é£ä¹¦å¦æçå¨ä½ï¼å建æ¹éãå¢éå失败éè¯ä»»å¡
ç«å±± PG Serverless æä¾ï¼ai_embed + pgvector èåç¸ä¼¼é®é¢
UPDATEÂ public.customer_comments
SETÂ embedding = rds_ai.ai_embed(content)::vector(2048);
4. Step 4ï¼ç¨æ·è¾å ¥ï¼â鿶鮿æè¿çé«é£é©é®é¢ãâ
é£ä¹¦å¦æçå¨ä½ï¼æé®çæ¡æ¾è¿çæ¿ä¸è·è¿å表
ç«å±± PG Serverless æä¾ï¼ai_retrieve å¬åç¸å
³è¯è®ºï¼ai_rag ç»åºå¯æº¯æºçæ¡
SELECTÂ rds_ai.ai_rag(
  question => 'åªäºæ¸ éåºç°äºææºå
çµåçæç«æé®é¢ï¼è¯·æ»ç»é£é©ï¼å¹¶å¼ç¨è¯è®ºIDã',
  source_schema => 'public',
  source_table => 'customer_comments',
  chunk_col => 'content',
  vector_col => 'embedding'
)Â ASÂ answer;
ä»âè½å¹²æ´»çæ°æ®åºâå°âè½æèçæ°æ®åºåº§â
æä¸é¢ä¸¤ä¸ªåºæ¯æ½è±¡åºæ¥ï¼ä¼åç°ä¸ä»¶äºï¼æ°æ®åºä»âä¿åä¸å¡æ°æ®âçåå¨å±ï¼è¢«å级æäºâå¤çä¸å¡è¯ä¹âçæ§è¡å±ã åºç¨ä¾§ä¸åéè¦ä¸ºæ¯ä¸æ¬¡è¯ä¹åææ¼è£ å¤é¨é¾è·¯ ââ éæ±å¯ä»¥ä»ä¸å¥ Agent 对è¯å¼å§ï¼é¡µé¢ãæ¥è¯¢ãèªå¨åãæéãçæ¿ç±é£ä¹¦å¦æéæ¥æå»ºï¼åºå±çæ°æ®æºè½ç±ç«å±±äºæ°æ®åº PostgreSQL Serverless çå ¨æè´è´£ã
ä»ä¸å¡çè§åº¦æ¥çï¼ä»·å¼ä¸»è¦æä¸ç¹ï¼
- æ´çç交ä»è·¯å¾Â ââ åºç¨å¼åä»å¤©/æçº§å缩å°åé/å°æ¶çº§ï¼
- æ´æ¸ æ°çæ²»çè¾¹ç ââ æ¨¡åãå¯é¥ãè°ç¨ãæééä¸å¨æ°æ®åºå±å¯æ¥å¯æ§ï¼
- æ´å¼ºçè½åå¤ç¨Â ââ AI å°±å SQL 䏿 ·ï¼å¯ä»¥è¢«ä¸åä¸å¡åå¤è°ç¨ã
æå ´è¶£çåå¦å¯ä»¥ä¸æè¯ï¼ç´æ¥ä½¿ç¨é£ä¹¦å¦æå¹³å°ï¼ä¸ Agent è䏿®µèªå·±çä¸å¡ââæ¾ä¸ä¸ªåé人ãç䏿¹ç¨æ·è¯è®ºãçä¸ä¸ªä¸å¡é®é¢é½è¡ãæå¿«åå åéï¼å°±è½çå°âAI ç´æ¥å¨åºéè·âæ¯ä»ä¹æ ·ã
Aitishiku.com