Show HN: Scry,具备拥堵定价机制的可编程互联网搜索
Show HN: Scry, programmable internet search w/ congestion pricing

原始链接: https://scry.io/

本摘要探讨了现代数据查询(利用高速分析数据库)如何挖掘跨数字生态系统的独特洞见。通过将复杂的 SQL 模式应用于海量数据集,我们可以提取出标准平台界面无法提供的“隐藏”知识。 主要洞见包括: * **LLM “Alpha”:** 通过筛选高收藏点赞比,识别提供高价值技术内容的冷门账号,从而绕过病毒式“赠品”内容的干扰。 * **社区趋势:** 量化 Hacker News 上“代码氛围”(vibe coding)的爆发,并通过映射语义随时间的偏移,追踪 LessWrong 上对齐(alignment)话语的演变。 * **社交图谱与争端:** 揭示如马斯克和奥特曼等意见领袖之间排他的关注重叠,并识别 Hacker News 上特定用户之间持续、高频的争论。 * **学术与预测速度:** 通过分析引文交叉点发现跨学科研究趋势,并利用预测市场数据捕捉公众在地缘政治和人工智能事件上情绪的快速转变。 通过将关注点从虚荣指标(点赞)转向行为信号(收藏、回复、下注),这些查询将原始日志转化为可操作的情报,以前所未有的速度揭示技术和知识话语的脉搏,远超人工策划的效率。

“Scry”是一款全新的可编程互联网搜索引擎,其核心是一个存储在 ClickHouse 中的 500 TB NVMe 索引。与 Google 或 Exa 等传统且不透明的搜索引擎不同——后者将用户意图映射到预先排名的结果中——Scry 允许用户直接针对其索引运行任意 SQL 和 Datalog 查询。 开发者 Xyra 认为,相比黑盒 AI 模型,许多信息需求更适合由关系型数据库来满足。为了管理资源竞争,Scry 采用了一种独特的基于拥塞的微型拍卖定价模式,使得非商业用户在非高峰时段可以免费使用该服务。 在 Hacker News 上,该项目因背离标准搜索范式而引起了广泛关注,一些用户认为它有助于打破大型搜索引擎的垄断。然而,反馈也指出了其中的障碍:用户认为目前的网站设计和定价文档难以理解,并要求开发者提供数据集的 P2P 访问方式。尽管存在这些用户体验(UX)方面的挑战,Scry 仍被定位为开发者的有力工具,旨在帮助他们通过 SQL 而非限制性的自然语言界面,实现对搜索数据的精细化控制。
相关文章

原文

Which small accounts posted LLM alpha this week that people saved but didn’t like?

A bookmark is a stronger signal than a like and nobody can see who left it. Every archived tweet revision carries both counts, so “saved more than liked” is one predicate; a token list keeps it on coding agents and inference, a second one drops the giveaway bait, and a follower ceiling keeps it to accounts you have never heard of. Three days, 204 million revisions read, 4.9 s.

SELECT any(author_handle) AS handle, max(author_followers) AS followers,
       max(like_count) AS likes, max(bookmark_count) AS saves,
       round(saves / likes, 1) AS saves_per_like, substring(any(text), 1, 150) AS text
FROM twitter.tweets
WHERE bucket_date >= today() - 3
  AND hasAnyTokens(search_text_lc, ['subagents', 'mcp', 'evals', 'harness', 'worktrees', 'agentic',
        'finetuning', 'rlhf', 'tokenizer', 'inference', 'codex', 'opus', 'sonnet', 'cursor', 'devin', 'ralph'])
  AND NOT hasAnyTokens(search_text_lc, ['giveaway', 'retweet', 'free', 'course', 'bookmark', 'link',
        'below', 'join', 'pdf', 'earn', 'money', 'income', 'breaking', 'viral', 'comment', 'dm', 'follow'])
  AND lang = 'en' AND NOT startsWith(text, 'RT @')
  AND bookmark_count >= 150 AND bookmark_count >= like_count AND author_followers < 20000
GROUP BY tweet_id
ORDER BY saves_per_like DESC
LIMIT 10;
→ @navaneethvb      558 followers   205 likes   337 saves   "A lot of my LLM inference posts here were explaining how…"
  @LLMpsycho      1,169 followers   146 likes   242 saves   "security-audit-skill is a Cloudflare coding agent skill…"
  @syrgkanis      1,087 followers   157 likes   198 saves   "…we recently released a fully automated agentic pipeline…"
  @jaimintf       2,873 followers   335 likes   467 saves   "before → after. right one used mcp + skills, both one-shotted."

Which way has LessWrong drifted on alignment: reachable, or out of reach?

Mint the two poles as parallel sentences that differ only in stance, take the balanced axis between them, score every post once as the mean of its chunks’ projections, and average the posts quarter by quarter, joined to real post timestamps. The window function centers each quarter on the era mean, because the zero of a contrast axis only means equidistant from the two sentences; posts is the census of the quarter’s LessWrong posts proper from forums.posts alone (it holds comments too, fifteen to a post on LessWrong; p.kind = 'post' leaves them out), scored is how many of them the embedding join reached, and coverage is their ratio: read a drift only where coverage is near 1, and an unscored quarter keeps its row with drift NULL instead of vanishing. One query returns the trajectory of a community.




SELECT quarter,
       if(scored = 0, NULL, lean - avgIf(lean, scored > 0) OVER ()) AS drift,
       scored, posts, round(scored / posts, 3) AS coverage
FROM (
  SELECT quarter, avg(post_lean) AS lean, count() AS scored
  FROM (
    SELECT e.target_key,
           toStartOfQuarter(any(p.original_timestamp)) AS quarter,
           avg(scry_cosine_similarity(e.embedding,
               scry_contrast_axis_balanced(@achievable, @unreachable))) AS post_lean
    FROM embeddings.chunks AS e
    JOIN forums.posts AS p ON p.post_key = e.target_key
    WHERE e.source = 'forum_posts' AND e.model_name = 'voyage-4-lite'
      AND p.source = 'lesswrong' AND p.kind = 'post'
      AND p.original_timestamp >= '2009-01-01'
    GROUP BY e.target_key)
  GROUP BY quarter) AS s
RIGHT JOIN (
  SELECT toStartOfQuarter(original_timestamp) AS quarter, uniqExact(post_key) AS posts
  FROM forums.posts
  WHERE source = 'lesswrong' AND kind = 'post' AND original_timestamp >= '2009-01-01'
  GROUP BY quarter) AS c USING (quarter)
ORDER BY quarter
LIMIT 100;

How fast did “vibe coding” catch on?

The search grammar rides inside the query as one predicate — here as an aggregate operand, with the month’s whole item count as its denominator. Hacker News: zero through January 2025, 34 mentions in February (the first item, 2025-02-03, links Karpathy’s post), 494 in March, 590 in April; 4 s, measured 2026-09-07.

SELECT toStartOfMonth(original_timestamp) AS month, count() AS items,
       countIf(scry_lex('"vibe coding"')) AS mentions,
       round(100000.0 * mentions / items, 1) AS per_100k
FROM hackernews.items
WHERE original_timestamp >= '2024-12-01'
GROUP BY month
ORDER BY month
LIMIT 36;
→ 2025-01      0     0.0 per 100k
  2025-02     34    11.9
  2025-03    494   169.4
  2025-04    590   212.6

Who do Elon Musk, Sam Altman and Eliezer Yudkowsky all follow?

The follow graph is a table, so “everyone all three of them follow” is one GROUP BY with a HAVING — a button Twitter never shipped in seventeen years. Ten accounts, Vitalik and JD Vance at the top, Ilya, Hinton and Scott Alexander further down, in 171 ms over 2.9 million rows read.

WITH common AS (
  SELECT followee_id FROM twitter.following
  WHERE follower_id IN (44196397, 1605, 2595244026)  -- @elonmusk, @sama, @ESYudkowsky
  GROUP BY followee_id HAVING uniqExact(follower_id) = 3)
SELECT argMax(handle, observed_on) AS handle, argMax(followers, observed_on) AS follower_count
FROM twitter.users
WHERE author_id IN (SELECT followee_id FROM common)
GROUP BY author_id
ORDER BY follower_count DESC
LIMIT 10;
→ VitalikButerin  7,866,454
  JDVance         5,551,484
  paulg           5,243,364
  karpathy        4,165,859
  demishassabis   1,865,207   … waitbutwhy, ilyasut, geoffreyhinton, slatestarcodex, ShaneLegg

Which papers cite both Scaling Laws and Chinchilla?

Citation edges are native keys, so “related work” becomes a set intersection: every OpenAlex work that cites both Scaling Laws for Neural Language Models and Training Compute-Optimal Large Language Models, ranked by its own citation count. 195 shared citers, 0.1 s, measured 2026-09-07 against the 2026-06-26 OpenAlex snapshot.

SELECT id, title, publication_year, cited_by_count
FROM openalex.works
WHERE id IN (
  SELECT citing_work_id FROM openalex.cited_by
  WHERE cited_work_id IN ('https://openalex.org/W3001279689',   -- Scaling Laws, 2020
                        'https://openalex.org/W4225591000')   -- Chinchilla, 2022
  GROUP BY citing_work_id HAVING uniqExact(cited_work_id) = 2)
ORDER BY cited_by_count DESC
LIMIT 10;
→ Large language models encode clinical knowledge   2023  3,194
  Can LLMs Transform Computational Social Science?   2023    429
  ProGen2: boundaries of protein language models      2023    426

Who keeps arguing with whom on Hacker News?

A self-join on parent_hn_id pairs every reply with the comment it answers; least/greatest make the pair unordered, and the HAVING keeps only pairs where both people replied to the other at least three times. Every regular feels the feuds; this is the first time anyone could count them — three weeks, 46.7 million rows read, 1.6 s.

SELECT least(a.original_author, b.original_author) AS one,
       greatest(a.original_author, b.original_author) AS other,
       count() AS replies, uniqExact(a.story_hn_id) AS threads
FROM hackernews.items AS a
INNER JOIN hackernews.items AS b ON a.parent_hn_id = b.hn_id
WHERE a.original_timestamp >= now() - INTERVAL 21 DAY
  AND a.original_author != b.original_author
GROUP BY one, other
HAVING countIf(a.original_author = one) >= 3
   AND countIf(a.original_author = other) >= 3
ORDER BY threads DESC, replies DESC
LIMIT 8;
→ JumpCrisscross ↔ toomuchtodo     11 replies   8 threads
  HarHarVeryFunny ↔ famouswaffles  39 replies   6 threads
  mitxela ↔ ranger_danger          20 replies   5 threads
  WalterBright ↔ nrr               21 replies   4 threads

What did forecasters change their minds about this week?

Every Manifold bet carries the market probability before and after it, so a market’s week is argMin of the first price and argMax of the last, joined to its latest title. Binary markets with thirty or more bettors, outside Manifold’s own unranked topic, ranked by how far the crowd moved — the news before the news, 27 million bets in 268 ms.

WITH moves AS (
  SELECT contract_id,
         argMin(prob_before, created_at_source) AS p_start,
         argMax(prob_after, created_at_source) AS p_now,
         uniqExact(user_id) AS bettors
  FROM manifold.bets
  WHERE created_at_source >= now() - INTERVAL 7 DAY
    AND prob_before != prob_after AND answer_id IS NULL
  GROUP BY contract_id HAVING bettors >= 30)
SELECT m.title, round(100 * p_start) AS was, round(100 * p_now) AS now, bettors
FROM moves
INNER JOIN (SELECT market_id, argMax(title, observed_on) AS title
            FROM manifold.markets
            WHERE market_id IN (SELECT contract_id FROM moves)
            GROUP BY market_id
            HAVING NOT has(JSONExtract(argMax(raw_market, observed_on),
                                       'groupSlugs', 'Array(String)'), 'unranked')) AS m
  ON m.market_id = moves.contract_id
ORDER BY abs(p_now - p_start) DESC
LIMIT 8;
→ Assassination attempt on a major AI-lab CEO by 2030?   30% → 99%   69 bettors
  Will Trump interfere with Greenland?                    80% → 17%   32
  US average gas price $4.40 or more on September 21?     50% → 97%   59
  All Millennium Prize Problems solved before EOY?        50% →  3%   31
  Opus 5.2 released in September?                         50% → 24%   93
联系我们 contact @ memedata.com