Post

A couple comments about what I’ve been learning about algo engineering, but first off: if you’re interested in helping us improve Discover and all of our algorithmic systems, we are hiring algo engineers jobs.gem.com/bluesky/am9i...

jobs.gem.comBluesky JobsBluesky Jobs
dan@danabra.mov

atproto is such a cool technology, but the low quality default feed of the default atproto product is dragging the whole thing down. i don’t want to say ngmi but that’s how it feels so far

My background isn’t ML so I recently had to start training in my off time. It’s actually been very fun; wish I had done this 5 years ago. But that’s my opening caveat- I’m still relatively junior on this subject matter

The way Discover works is by sampling from multiple different “Candidate Groups (CGs).” This can be things like followed users, liked by followed users, social clusters, and topics you’ve voiced interest in.

These get put through a predictive ranker, which is a large statistical model that tries to guess whether the viewer would like a post. Model #1 for us to train.

The CGs each work differently. The topical ones require classification. Model #2 for us to train. This also requires a good embedding model, which I’m pretty sure (?) we don’t train or fine tune ourselves but requires a lot of experimentation.

The social cluster CGs don’t necessarily need ML, though I’m sure there are models which can generate them. My recent posts about neo4j have been my side work to add more graph analysis to our stack while the algo team focuses on deep learning systems

0 reposts66 likes

So it’s a lot of interlocking models - plus a good data pipeline and evaluation system - that all have to combine. Even though I also wish that the progress was faster, selfishly I have enjoyed learning how it’s done and I intend to keep sharing what we learn.

One of the things bugging Dan is that “show less” isn’t having the effect it should. I’ll have to ask the team about it this week but the answer is probably time prioritization with limited resources. Which is why I’m excited we’re hiring for this role, and that I can give it more attention.

I’ll tack on spare thoughts as I have them Topic classification for posts has been very tough because they’re so short. I think Ian has found some promising papers that look at the entirety of an account to essentially act as hints. Manual labels by users (aka tagging) could also help

Manual tagging by users can be problematic because of deliberate mistagging (I regularly find porn in my 'Flowers' and 'Moss' feeds; was forced to entirely unsubscribe from 'Art'). People will do anything to get seen.

Perhaps I am missing a feature somewhere, but the reason the discover tag is useless to me is because I don't have an option to have it prioritize newness. I get posts from so long ago I'm not at all interested. I would love to be able to weight recency. Next 50 in algo chronologically.

People from digital humanities and comp. social science often use methods based on clustering embeddings (such as BERTopic) as it works well on short texts and scales much better than LDA and LLM-based stuff

That could get messy, I post about several non overlapping subjects. How about adding tags to posts from that analysis as it's written, this would provide a 'this wording gives these vibes" service , could be a valuable tool for understanding you audience and your post. Would need to be optional

+1 for manual user-created signals. Not ideal from a UX standpoint, but yall have a lot of hardcore fans willing to help in order to see the ecosystem succeed. People already do a less useful version of this by eg manually creating lists/feeds. An official Bluesky UI would at least pool user effort.

For what it's worth, I've found standard LDA (implemented in mallet/tomotopy) works quite well on Tweets, despite their length. Then perhaps apply a very small LM to transform the topic words / top documents to human-readable labels?

An ML friend suggested LLMs are better than manual labellers than humans nowadays—and you wouldn't need to use massive LLMs either (but it also wouldn't be free). Also suggested optimising for x*likes + y*reposts + z*replies vs just x*likes (though that might just be misreading what you wrote above)

yeah I think the account and the accounts interacting with it are basically a hard requirement to properly classify, an issue I've noticed w/ *ahem* some art is they either don't tag at all, or *really* like to tag everything except the actual target audience

Please help!!!! I really don't want to see people wearing rubber suits. Today one was in a cage with sexual suggestions!!!! AND I HAVE ADULT CONTENT TURNED OFF. I don't want to have leave Bluesky because of gross content.

not sure if this is already how the social clusters work but graph embeddings of follows/interaction counts would make sense if you want something like a social similarity measurement for ranking