rag-creator-database-requirements.md 6.7 KB

AI 提号数据库与检索需求整理

目标

用户上传 Brief 或需求文件后,服务端自动完成需求解析、达人库检索、外部 API 兜底、推荐排序和名单导出。系统应优先使用自有达人库;自有库不足时再调用 JustOne API 补充候选,并将 JustOne 返回的原始数据全部沉淀,作为后续自有库建设和 RAG 检索的数据缓存。

检索优先级

  1. 已清洗达人库:来自公司明确归类的达人表、用户上传的本地资源库,以及后续人工确认后的达人数据。
  2. 未清洗接口缓存:JustOne API 等外部接口返回的原始数据,不论当前是否符合 Brief,都需保存。
  3. 外部 API 兜底:当数据库无法召回足够候选时,调用 JustOne API 搜索。

数据有效期

  • 已清洗达人库以业务更新为准,可长期保存,并记录来源、更新时间和字段完整度。
  • 未清洗接口缓存默认有效期 30 天。超过 30 天的数据不参与自动推荐,只保留为历史归档和后续分析材料。

RAG 友好的线上表结构建议

creator_profile_clean

用于已清洗、可直接推荐的达人主表。

字段 类型 说明
id uuid / bigint 主键
platform varchar 平台,如 xiaohongshu、douyin
platform_user_id varchar 平台账号 ID
display_name varchar 昵称
gender varchar 性别
fans_count bigint 粉丝数,统一存真实数量
liked_collect_count bigint 赞藏/互动数,统一存真实数量
content_type text 原始内容类型文本
content_tags jsonb 结构化内容标签
persona_tags jsonb 人设/风格标签
city varchar 业务城市
geo_location varchar 真实地理位置
profile_url text 主页链接
cooperation_method varchar 合作方式
image_price int 图文报价
video_price int 视频报价
min_price int 最低报价
source_kind varchar uploaded/company/confirmed_api
source_file text 上传文件或来源
source_confidence int 来源可信度
updated_at timestamp 最近更新时间
embedding_text text 用于向量化的拼接文本
embedding vector 向量字段,后续接 pgvector/Milvus 等

建议唯一索引:(platform, platform_user_id)

provider_raw_cache

用于保存 JustOne API 等接口返回的未清洗原始数据。

字段 类型 说明
id uuid / bigint 主键
provider varchar justone/tikhub 等
endpoint text 请求接口
request_params jsonb 请求参数
response_body jsonb 原始响应
fetched_at timestamp 获取时间
expires_at timestamp 默认 fetched_at + 30 天
normalized_status varchar pending/normalized/rejected
archive_path text 本地归档路径

建议索引:provider, fetched_at, expires_at,以及对 request_params 建 GIN 索引。

provider_creator_raw_cache

用于保存外部 API 返回后解析出的“逐达人未清洗缓存”。它和 provider_raw_cache 的关系是:provider_raw_cache 保留完整原始响应,便于追溯;provider_creator_raw_cache 将响应中的每个达人拆出来,便于后续 RAG 检索、去重、清洗和人工确认。

字段 类型 说明
id uuid / bigint 主键
provider varchar justone/tikhub 等
endpoint text 请求接口
request_params jsonb 请求参数
platform varchar 平台,如 xiaohongshu、douyin
platform_user_id varchar 平台账号 ID
display_name varchar 昵称
fans_count bigint 粉丝数,统一存真实数量
liked_collect_count bigint 赞藏/互动数
content_type text 原始内容类型文本
content_tags jsonb 解析出的内容标签
persona_tags jsonb 解析出的人设/风格标签
city varchar 城市
geo_location varchar 地理位置
profile_url text 平台主页链接
cooperation_method varchar 合作方式
image_price int 图文报价
video_price int 视频报价
min_price int 最低报价
cooperation_status varchar 合作状态
raw_creator jsonb 单个达人原始解析对象
fetched_at timestamp 获取时间
expires_at timestamp 默认 fetched_at + 30 天
normalized_status varchar raw/normalized/rejected
embedding_text text 用于向量化的拼接文本
embedding vector 向量字段,后续接 pgvector/Milvus 等

建议唯一索引:(provider, platform, platform_user_id)。建议索引:platform, city, expires_at,以及对 content_tags 建 GIN 索引。

creator_profile_retrieval_view

用于统一查询“当前可参与检索的达人数据”。该视图合并:

  • creator_profile_clean 中的已清洗达人;
  • provider_creator_raw_cache 中未过期的外部 API 未清洗达人。

视图字段应保持和推荐检索需要的字段一致,并增加 cache_layer 标识来源层级:

cache_layer 说明
clean 已清洗/本地上传/人工确认达人
provider_raw 外部 API 未清洗缓存达人,且 expires_at > now()

日常排查总可检索数量时建议查询:

select cache_layer, source_provider, platform, count(*)
from creator_profile_retrieval_view
group by cache_layer, source_provider, platform;

creator_retrieval_event

用于记录每次 Brief 检索过程,方便复盘。

字段 类型 说明
id uuid / bigint 主键
task_id varchar 提号任务 ID
query_text text Brief/检索文本
criteria jsonb 结构化搜索条件
local_hit_count int 本地库命中数
provider_hit_count int 外部 API 命中数
final_count int 最终候选数
created_at timestamp 发生时间

本地开发阶段实现策略

当前开发环境已经升级为本地 PostgreSQL:

  • 数据库:tihao_ai
  • 应用用户:tihao_ai_app
  • 初始化脚本:npm run db:init
  • 表结构脚本:server/db/schema.sql
  • Clean 达人表:creator_profile_clean
  • 未清洗接口原始响应表:provider_raw_cache
  • 未清洗接口逐达人缓存表:provider_creator_raw_cache
  • 当前可检索达人视图:creator_profile_retrieval_view
  • 检索事件表:creator_retrieval_event
  • JustOne 原始响应归档:docs/provider-archives/

本地先使用 double precision[] 保存向量,并通过 PostgreSQL 函数 cosine_similarity 做余弦相似度检索。上线环境如安装 pgvector,可将 embedding 字段迁移为 vector 类型,并保留当前服务层的查询编排逻辑。