网易首页 > 网易号 > 正文 申请入驻

别为向量数据库付费:用PostgreSQL搞定AI搜索

0
分享至

很多开发者想做一个能读懂公司资料的AI助手——让它翻翻PDF、查查内部Wiki、看看历史工单,然后基于这些内容回答问题。这种技术叫RAG(检索增强生成)。

AI热潮刚起来那会儿,大家以为必须得买Pinecone、Milvus这类专门的"向量数据库",为此在架构里硬塞了一层复杂组件。2026年了,Rails社区有更简单的玩法:直接用PostgreSQL。


借助pgvector扩展和一个叫neighbor的Ruby gem,AI数据可以跟你的业务数据存在同一个库里,RAG能力到手,ActiveRecord的舒适度还在。下面是用4步实现"Chat with your Database"的完整流程。


核心概念:Embedding是什么

AI不读文字,读的是数学。当你把一段文字丢给OpenAI的嵌入模型,它返回的是一个Embedding——一个包含1,536个数字的巨大数组。

把这个数组想象成地图上的坐标。讨论相似主题的段落,在地图上挨得更近。搜索时,我们把用户问题也转成坐标,然后问数据库:"这段落离我这个问题在地图上有多近?"

第一步:数据库配置

先让PostgreSQL知道它可以存这些大数组,启用vector扩展。

Gemfile里加上:

gem 'ruby-openai' # 调用ChatGPT

gem 'neighbor' # 给ActiveRecord加向量搜索

执行bundle install。

生成迁移文件,启用扩展并给Document模型加向量列:

rails g migration AddEmbeddingsToDocuments

# db/migrate/20260506120000_add_embeddings_to_documents.rb

class AddEmbeddingsToDocuments < ActiveRecord::Migration[8.0]

def change

enable_extension "vector"

add_column :documents, :embedding, :vector, limit: 1536

end

end

执行rails db:migrate。


模型里告诉neighbor跟踪这个列:

# app/models/document.rb

class Document < ApplicationRecord

has_neighbors :embedding

end

第二步:生成Embedding

用户创建Document时,需要把文本转成embedding存进数据库。API调用慢,建议用Solid Queue后台任务处理。

# app/services/embedding_service.rb

class EmbeddingService

def self.generate(document)

client = OpenAI::Client.new(access_token: ENV['OPENAI_API_KEY'])

response = client.embeddings(

parameters: {

model: "text-embedding-3-small",

input: document.content

# 提取1,536维数组

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
世界杯首日赛程前瞻:墨西哥南非揭幕战,韩国捷克出线关键战

世界杯首日赛程前瞻:墨西哥南非揭幕战,韩国捷克出线关键战

全景体育V
2026-06-11 07:48:23
世界杯晴天霹雳!全部取消!

世界杯晴天霹雳!全部取消!

福建睿平
2026-06-10 16:13:20
NBA重磅交易将诞生!3支球队参与,字母哥去向公布,争端已升级

NBA重磅交易将诞生!3支球队参与,字母哥去向公布,争端已升级

小小科普员
2026-06-10 13:57:15
迪丽热巴陈飞宇情侣手链被扒疑似恋情曝光

迪丽热巴陈飞宇情侣手链被扒疑似恋情曝光

草莓信箱
2026-06-11 09:27:27
核工部退休高工老太太一段采访火了:来生我绝不把孩子培养优秀!

核工部退休高工老太太一段采访火了:来生我绝不把孩子培养优秀!

犀利强哥
2026-06-11 06:59:33
当年高考749分差1分满分,却因长相“太丑”被嘲,现如今怎么样了

当年高考749分差1分满分,却因长相“太丑”被嘲,现如今怎么样了

牛锅巴小钒
2026-06-09 14:29:45
12 年青春破防!李晨郑恺五哈合体,两档综艺状态反差太真实

12 年青春破防!李晨郑恺五哈合体,两档综艺状态反差太真实

动物奇奇怪怪
2026-06-10 18:20:36
朴信惠挺孕肚出游!身旁竟是巨星裴勇浚一家 13年姐妹情谊曝光

朴信惠挺孕肚出游!身旁竟是巨星裴勇浚一家 13年姐妹情谊曝光

ETtoday星光云
2026-06-10 17:42:06
冯薪朵钟正官宣恋情:被“生子”热搜逼出的公开

冯薪朵钟正官宣恋情:被“生子”热搜逼出的公开

情感大头说说
2026-06-10 16:24:25
被父亲偷改志愿错失北大,24年拒不回家,再联系时一语击溃母亲

被父亲偷改志愿错失北大,24年拒不回家,再联系时一语击溃母亲

流云随风去远方
2026-06-06 10:13:29
缺席下孩子的教育吧!男子教女儿50+50=100被嘲:本来能考清华的

缺席下孩子的教育吧!男子教女儿50+50=100被嘲:本来能考清华的

林林先生
2026-06-11 09:23:25
姚氏入宫祝寿归来,张廷玉发现妻子容貌异变,其人早已遭人替换。

姚氏入宫祝寿归来,张廷玉发现妻子容貌异变,其人早已遭人替换。

磊子讲史
2026-06-06 19:30:18
国民党给他机票让他逃,他说:毛泽东是我同学,我怕什么?

国民党给他机票让他逃,他说:毛泽东是我同学,我怕什么?

新一说史
2026-06-09 20:26:38
3场开幕式的世界杯来啦

3场开幕式的世界杯来啦

新浪财经
2026-06-11 05:50:48
德尚:姆巴佩已经踢了3年中路,我们这些教练都很蠢吗?

德尚:姆巴佩已经踢了3年中路,我们这些教练都很蠢吗?

懂球帝
2026-06-10 14:38:05
很多女人在床上的拘束,不是因为不喜欢,是因为“羞耻感”

很多女人在床上的拘束,不是因为不喜欢,是因为“羞耻感”

加油丁小文
2026-06-05 08:30:15
模拟考648分孤女,被舅舅烧书阻止参加高考?涉事者已被刑拘!

模拟考648分孤女,被舅舅烧书阻止参加高考?涉事者已被刑拘!

林林先生
2026-06-10 18:28:35
CBA狼真来了!四川0胜42负逼降级落地,NBL土豪已磨刀霍霍

CBA狼真来了!四川0胜42负逼降级落地,NBL土豪已磨刀霍霍

天光破云来
2026-06-11 04:57:08
图片报:纳帅训练中使用液压模拟人墙,皇马等队已运用此技术

图片报:纳帅训练中使用液压模拟人墙,皇马等队已运用此技术

懂球帝
2026-06-11 00:58:11
1977年邓小平复出时,一位高级干部坚决反对,邓公是如何回应的?

1977年邓小平复出时,一位高级干部坚决反对,邓公是如何回应的?

历史龙元阁
2026-06-10 12:20:13
2026-06-11 10:23:00
闪存猎手
闪存猎手
全网蹲好价的野生捕手,算力与羊毛都不可辜负。
5067文章数 40关注度
往期回顾 全部

科技要闻

8亿用户的钉钉,只有1000人在扛

头条要闻

美军因直升机被击落发动报复打击 伊朗否认与坠机有关

头条要闻

美军因直升机被击落发动报复打击 伊朗否认与坠机有关

体育要闻

2026世界杯,我们看什么?

娱乐要闻

蒙淇淇发文开撕白鹿!舆论再次反转

财经要闻

干细胞生意:17万一针的希望

汽车要闻

埃安i60 530宁德时代版上市限时焕新价10.36万起

态度原创

家居
艺术
亲子
时尚
房产

家居要闻

空间微调 移形换境

艺术要闻

中国这12个梦幻仙境,一处比一处梦幻,常年云雾萦绕

亲子要闻

突破新生儿急性肾损伤诊断盲区 侯凡凡团队再次改写国际指南

毕业季,为林徽因正名的年轻女孩们

房产要闻

方案曝光,三亚又一地王级豪宅要出!

无障碍浏览 进入关怀版