- SignalDesk59分钟前
ps:遵循社区规则,手动改写重新发一篇。 上次写过一篇:[完全免费] 在 Reddit 发帖老被删?我做了个工具帮你找社区、读规则]( [完全免费]分享一个 Reddit 工具:社区地图找版块 + AI 帮你读版规 )。 介绍了 Karmit 的两个功能: Reddit 社区地图 社区分析 后来收到几条反馈: 原来的搜索必须知道社区叫什么 无论是地图还是社区分析,都是按 已知社区名 去查。 比如输入 saas ,才能找到 r/SaaS 但很多时候用户只知道自己的需求或者产品,但不知道应该去哪个社区: 我做了个给独立开发者用的效率工具,想找早期用户,该发哪儿? 这里不包含 subreddit 名,直接拿去搜索,Reddit 只会按字面匹配,基本搜不出有用的结果。 所以这次加了第三个功能: 按描述搜社区 。描述清楚需求,它就能帮你到合适的社区。 第一步:给 11.5 万个社区补简介 社区地图的数据里有一张 subreddit 表:1.5 MB、11.5 万行,每行一个社区名 名字有了,但没有描述。地图上只有点,没有内容。 于是就先给每个社区补了一遍简介: 115,817 个社区名 1,159 次请求 耗时 57 分钟 最终拿到约 30 MB 语料 补完后的数据大概是这样: 指标 数值 有公开简介的社区 107,332 个( 92.7% ) 简介长度中位数 115 字符 订阅数中位数 3,844 人 订阅数超过一万的社区 43,105 个 最大社区 6,759 万人 92.7% 的覆盖率比我预想高不少。原本以为很多社区简介为空,语义搜索就没有可匹配的内容;实际简介为空的只有 4.9%。 另外,订阅数中位数只有 3,844,说明这 11.5 万个社区里,大部分都是小社区。 这正好也是语义搜索有价值的地方:大社区用关键词通常就能找到,真正难找的是那些人数不多、但主题很准的社区。 第二步:灌进向量库 嵌入模型 : @cf/baai/bge-m3 向量库 :115,813 条向量,合计 1.186 亿个维度 选 bge-m3 的主要原因是多语言能力。你可以直接用中文描述需求,可以匹配到英文的社区简介,不需要先翻译一次。 第三步:纯向量搜索不够 建完库后测了一下,发现效果有明显分界。 如果只是找某个话题的讨论社区,效果不错: 我在找讨论居家健身和减脂的社区 → bodyweightfitness · GYM · loseit · xxfitness · homegym 我想找二手机械键盘的交易社区 → mechmarket · MechanicalKeyboards · hardwareswap · keycaps 中文输入,英文社区简介,结果基本靠谱。 但换成「我想推广我的 X」这类需求,结果就歪了: 我想给我的 B2B SaaS 工具找早期付费用户 → INeedMoneyNow · SaaS · hotdommes · SwagBucks · TheGoodPlace 六个结果里大概只有一个是对的。 原因就是:原句里的重点是「推广」「找用户」「付费」,向量检索会被带去赚钱、求助类社区,而不是 SaaS 本身。 所以加了一步改写:先把用户的目标改写成 社区简介会怎么写的口吻 ,再去检索。 原文:我想给我的 B2B SaaS 工具找早期付费用户 ↓ 改写:A community for SaaS founders and indie hackers discussing building, launching and growing software products... ↓ 结果:SaaS (0.681) · Entrepreneur · startups · indianstartups 这样六个结果里能对五个,相似度也从约 0.55 提升到 0.68 。 还有一个意外发现: 改写的表达方式很重要。 想找讨论 Rust 编程语言的地方 如果改写时堆了很多术语: systems programming, cargo, borrow checker, async 那么 r/rust 连前 50 都进不去,搜出来的大多是生存游戏 Rust 的社区。 换成更平实的描述: a community about the Rust programming language, where developers share crates and ask questions r/rust 就能排到第 1。 术语越多,不一定越准确;有时反而把真正的主题冲淡了。 第四步:用 jev 重排 Jev是最近比较流行的模型,擅长判断比较,输出概率,非常适合作为重排的模型。 以 Rust 为例,索引里有三十多个和 Rust 游戏相关的社区,而 Rust 编程语言只有一个。它们的简介用词很接近,很多都是: A community for Rust… 光看余弦相似度,很难区分这是编程语言还是生存游戏。 结果就是 r/RustPc(1.6 万人)可能排在 r/rust(42 万人)前面。 所以后面接了 jev 做重排。它更适合做分类和选择判断:给它一个用户需求和一批候选社区,让它判断哪些候选真正匹配。 一次请求就够: { "state": { "need": "我想给我的 B2B SaaS 工具找早期付费用户" }, "model": "jev-latest", "questions": { "answer": { "type": "choice", "instructions": "这些社区里,哪个最适合 need 描述的这个人?只看每个选项自己的描述说它是关于什么的、谁在那发帖。一个只是碰巧和需求共用了同一个词、但说的是另一回事的社区,不算匹配。", "criteria": { "SaaS": "r/SaaS — Discussions and useful links for...", "startups": "r/startups — ...", "Entrepreneur": "r/Entrepreneur — ..." } } } } 提示词最后那句,主要是为 Rust 这种情况准备的:名字或简介里碰巧有相同词,但社区实际讨论的不是一回事,就不该算匹配。 成本也很低。一次请求大约 810 token;按 jev 的价格算,约 $0.000034 一次搜索。即使一个月搜 3 万次,大约也只要 $1 。 最终链路 用户:我想给我的 B2B SaaS 工具找早期付费用户 │ ├─ 改写成英文社区简介的口吻 ├─ bge-m3 编码 ├─ 向量检索 ├─ jev 重排 └─ 按概率排序;同分时再参考相似度和社区规模 现在可以直接用 新功能在 Karmit 社区分析 。 依然完全免费,不需要登录;只有 AI 对话部分需要登录。 社区地图 :把 11.5 万个社区按用户重合度铺开 社区分析 :查看简介、成员数和完整规则 按描述搜社区 :说清需求,找合适的社区 1 个帖子 - 1 位参与者 阅读完整话题
- 情报分类:硬件与数码
- 分类依据:内容涉及硬件、数码产品或通信卡
- 信息来源:服务器 / LINUX DO - 最新话题
- 发布时间:2026/9/22 22:30:24
- 暂无回复