Tabelle der Inhalte Overview System Architecture Components Home Mixer Thunder Phoenix Candidate Pipeline How It Works Pipeline Stages Scoring and Ranking Filtering Key Design Decisions Übersicht Der Algorithmus "For You feed" holt, rangiert und filtert Beiträge aus zwei Quellen: In-Network (Thunder): Beiträge von Konten, die Sie verfolgen Out-of-Network (Phoenix Retrieval): Posts, die aus einem globalen Corpus entdeckt wurden Beide Quellen werden kombiniert und zusammengefasst, indem , ein Grok-basiertes Transformator-Modell, das die Engagementwahrscheinlichkeiten für jeden Post vorhersagt. Phoenix Der Grok-basierte Transformator macht das ganze schwere Heben, indem er Ihre Verlobungsgeschichte (was Ihnen gefiel, geantwortet, geteilt usw.) versteht und damit bestimmt, welche Inhalte für Sie relevant sind. Systemarchitektur ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │ FOR YOU FEED REQUEST │ └─────────────────────────────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │ HOME MIXER │ │ (Orchestration Layer) │ ├─────────────────────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ QUERY HYDRATION │ │ │ │ ┌──────────────────────────┐ ┌──────────────────────────────────────────────┐ │ │ │ │ │ User Action Sequence │ │ User Features │ │ │ │ │ │ (engagement history) │ │ (following list, preferences, etc.) │ │ │ │ │ └──────────────────────────┘ └──────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ CANDIDATE SOURCES │ │ │ │ ┌─────────────────────────────┐ ┌────────────────────────────────┐ │ │ │ │ │ THUNDER │ │ PHOENIX RETRIEVAL │ │ │ │ │ │ (In-Network Posts) │ │ (Out-of-Network Posts) │ │ │ │ │ │ │ │ │ │ │ │ │ │ Posts from accounts │ │ ML-based similarity search │ │ │ │ │ │ you follow │ │ across global corpus │ │ │ │ │ └─────────────────────────────┘ └────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ HYDRATION │ │ │ │ Fetch additional data: core post metadata, author info, media entities, etc. │ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ FILTERING │ │ │ │ Remove: duplicates, old posts, self-posts, blocked authors, muted keywords, etc. │ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ SCORING │ │ │ │ ┌──────────────────────────┐ │ │ │ │ │ Phoenix Scorer │ Grok-based Transformer predicts: │ │ │ │ │ (ML Predictions) │ P(like), P(reply), P(repost), P(click)... │ │ │ │ └──────────────────────────┘ │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ ┌──────────────────────────┐ │ │ │ │ │ Weighted Scorer │ Weighted Score = Σ (weight × P(action)) │ │ │ │ │ (Combine predictions) │ │ │ │ │ └──────────────────────────┘ │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ ┌──────────────────────────┐ │ │ │ │ │ Author Diversity │ Attenuate repeated author scores │ │ │ │ │ Scorer │ to ensure feed diversity │ │ │ │ └──────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ SELECTION │ │ │ │ Sort by final score, select top K candidates │ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ FILTERING (Post-Selection) │ │ │ │ Visibility filtering (deleted/spam/violence/gore etc) │ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │ RANKED FEED RESPONSE │ └─────────────────────────────────────────────────────────────────────────────────────────────┘ Komponenten Home Mixer Location: home-mixer/ Die Orchestrierungsschicht, die den For You Feed zusammensetzt. Rahmen mit den folgenden Stufen: CandidatePipeline Stage Description Query Hydrators Fetch user context (engagement history, following list) Sources Retrieve candidates from Thunder and Phoenix Hydrators Enrich candidates with additional data Filters Remove ineligible candidates Scorers Predict engagement and compute final scores Selector Sort by score and select top K Post-Selection Filters Final visibility and dedup checks Side Effects Cache request info for future use Suche nach Hydraten Fetch Benutzerkontext (Engagement-Geschichte, folgende Liste) Quellen Retrieve Kandidaten aus Thunder und Phoenix Hydratatoren Kandidaten mit zusätzlichen Daten bereichern Filter Unbefugte Kandidaten entfernen Scorers Vorhersage des Engagements und Berechnung der endgültigen Ergebnisse Selektorin Sortieren nach Punktzahl und wählen Top K Filter nach der Auswahl Abschließende Sichtbarkeit und Dedup-Checks Nebenwirkungen Cache-Anforderungsinformationen für zukünftige Verwendung Der Server zeigt einen gRPC-Endpunkt ( ) die rangierte Beiträge für einen bestimmten Benutzer zurückgibt. ScoredPostsService Thunder Location: thunder/ Ein in-memory-Post-Shop und Echtzeit-Einnahme-Pipeline, die aktuelle Beiträge von allen Benutzern verfolgt. Consumes post erstellen / löschen von Ereignissen aus Kafka Bewahrt Speicher pro Benutzer für originelle Beiträge, Antworten / Reposts und Video-Posts auf Serviert „in-network“-Postkandidaten von Konten, denen der anforderende Benutzer folgt Posts, die älter sind als die Aufbewahrungsfrist Thunder ermöglicht Sub-Millisekunden-Suchen von Inhalten im Netzwerk, ohne eine externe Datenbank zu treffen. Phönix Location: phoenix/ Die ML-Komponente mit zwei Hauptfunktionen: 1. Retrieval (Two-Tower Modell) Finden Sie relevante Posts außerhalb des Netzwerks: User Tower: Codiert Benutzerfunktionen und Engagementverlauf in ein Embedded Candidate Tower: Codiert alle Beiträge in Embeddings Ähnlichkeitssuche: Erholt Top-K-Posts über Produktähnlichkeiten 2. Rangierung (Transformer mit Kandidatenisolation) Prognose der Engagementwahrscheinlichkeiten für jeden Kandidaten: Nimmt Benutzerkontext (Engagement-Geschichte) und Kandidatenbeiträge als Eingabe Verwenden Sie besondere Aufmerksamkeit Masken, so dass die Kandidaten nicht gegenseitig zu besuchen Ausgabewahrscheinlichkeiten für jeden Aktionstyp (wie Antwort, Repost, Klicken usw.) Siehe für detaillierte Architekturdokumentation. phoenix/README.md Kandidat für Pipeline Location: candidate-pipeline/ Ein wiederverwendbarer Rahmen für den Aufbau von Empfehlungspipelines. Definiert Merkmale für: Trait Purpose Source Fetch candidates from a data source Hydrator Enrich candidates with additional features Filter Remove candidates that shouldn't be shown Scorer Compute scores for ranking Selector Sort and select top candidates SideEffect Run async side effects (caching, logging) Source Kandidaten aus einer Datenquelle abrufen Hydrator Kandidaten mit zusätzlichen Funktionen bereichern Filter Kandidaten entfernen, die nicht angezeigt werden sollten Scorer Berechnen Sie die Punkte für das Ranking Selector Sortieren und Auswählen der Top-Kandidaten SideEffect Führen Sie asynchrone Nebenwirkungen aus (Caching, Logging) Das Framework führt Quellen und Hydratoren parallel, wo möglich, mit konfigurierbarer Fehlerbehandlung und Logging. Wie es funktioniert Pipeline Phasen Query Hydration: Erfassen Sie die Geschichte und Metadaten der letzten Engagements des Benutzers (z. B. folgende Liste) : Retrieve candidates from: Candidate Sourcing : Recent posts from followed accounts (in-network) Thunder : ML-discovered posts from the global corpus (out-of-network) Phoenix Retrieval : Enrich candidates with: Candidate Hydration Core post data (text, media, etc.) Author information (username, verification status) Video duration (for video posts) Subscription status : Remove posts that are: Pre-Scoring Filters Duplicates Too old From the viewer themselves From blocked/muted accounts Containing muted keywords Previously seen or recently served Ineligible subscription content : Apply multiple scorers sequentially: Scoring : Get ML predictions from the Phoenix transformer model Phoenix Scorer : Combine predictions into a final relevance score Weighted Scorer : Attenuate repeated author scores for diversity Author Diversity Scorer : Adjust scores for out-of-network content OON Scorer Auswahl: Sortieren nach Punktzahl und wählen Sie die Top-Kandidaten aus Post-Selection-Verarbeitung: Abschließende Validierung der Postkandidaten Scoring und Ranking Das Phoenix Grok-basierte Transformormodell prognostiziert Wahrscheinlichkeiten für mehrere Engagement-Typen: Predictions: ├── P(favorite) ├── P(reply) ├── P(repost) ├── P(quote) ├── P(click) ├── P(profile_click) ├── P(video_view) ├── P(photo_expand) ├── P(share) ├── P(dwell) ├── P(follow_author) ├── P(not_interested) ├── P(block_author) ├── P(mute_author) └── P(report) Die Kombinieren Sie diese in einem abschließenden Ergebnis: Weighted Scorer Final Score = Σ (weight_i × P(action_i)) Negative Aktionen (block, mute, report) haben negative Gewichte, die Inhalte, die der Benutzer wahrscheinlich nicht mögen würde, nach unten schieben. Filtern Der Filter läuft in zwei Phasen: Pre-Scoring Filters: Filter Purpose DropDuplicatesFilter Remove duplicate post IDs CoreDataHydrationFilter Remove posts that failed to hydrate core metadata AgeFilter Remove posts older than threshold SelfpostFilter Remove user's own posts RepostDeduplicationFilter Dedupe reposts of same content IneligibleSubscriptionFilter Remove paywalled content user can't access PreviouslySeenPostsFilter Remove posts user has already seen PreviouslyServedPostsFilter Remove posts already served in session MutedKeywordFilter Remove posts with user's muted keywords AuthorSocialgraphFilter Remove posts from blocked/muted authors DropDuplicatesFilter Duplicate Post IDs entfernen CoreDataHydrationFilter Entfernen von Beiträgen, die die Kernmetadaten nicht hydrieren konnten AgeFilter Entfernen von Beiträgen älter als Schwelle SelfpostFilter Benutzer eigene Beiträge entfernen RepostDeduplicationFilter Reposts des gleichen Inhalts IneligibleSubscriptionFilter Entfernen paywalled-Inhalte Benutzer nicht zugreifen kann PreviouslySeenPostsFilter Entfernen von Beiträgen User has already seen PreviouslyServedPostsFilter Entfernen von Beiträgen, die bereits in der Sitzung serviert wurden MutedKeywordFilter Entfernen von Beiträgen mit verschwundenen Keywords des Benutzers AuthorSocialgraphFilter Entfernen von Beiträgen von blockierten/mutierten Autoren Post-Selection Filters: Filter Purpose VFFilter Remove posts that are deleted/spam/violence/gore etc. DedupConversationFilter Deduplicate multiple branches of the same conversation thread VFFilter Entfernen von Beiträgen, die gelöscht wurden / Spam / Gewalt / oben usw. DedupConversationFilter Deduplizieren von mehreren Zweigen desselben Konversationszeichen Wichtige Designentscheidungen 1. Keine handgefertigten Funktionen Das System stützt sich vollständig auf den Grok-basierten Transformator, um Relevanz aus den Sequenzen der Benutzerinteraktion zu erlernen. Keine manuelle Feature-Engineering für Inhaltsrelevanz. 2. Kandidatenisolation im Ranking Während der Transformator-Schlussfolgerung können sich die Kandidaten nicht gegenseitig berücksichtigen - nur auf den Benutzerkontext. Dies stellt sicher, dass die Punktzahl für einen Beitrag nicht davon abhängt, welche anderen Beiträge in der Serie sind, wodurch die Ergebnisse konsistent und cachebar sind. 3. Hash-basierte Embeddings Sowohl das Abrufen als auch das Ranking verwenden mehrere Hash-Funktionen für das Einbinden von Lookup 4. Multi-Action Vorhersage Anstatt einen einzelnen "Relevance" -Score vorherzusagen, prognostiziert das Modell die Wahrscheinlichkeiten für viele Aktionen. 5. Composable Pipeline Architektur Die Crate bietet einen flexiblen Rahmen für den Aufbau von Empfehlungspipelines mit: candidate-pipeline Trennung von Pipeline-Ausführung und Überwachung von der Geschäftslogik Parallele Ausführung von unabhängigen Stufen und graziöses Fehlermanagement Einfaches Hinzufügen neuer Quellen, Hydratationen, Filter und Scorer Hinweis: Die Transformator-Implementierung ist aus der Open-Source-Version von Grok-1 von xAI, angepasst für Empfehlungssysteme Verwendungsfälle. Der Transformator wird von der von xAI, angepasst für Empfehlungssystem-Nutzungsfälle. Note: Grok-1 open source release Grok-1 Open Source veröffentlicht Dieses Projekt ist unter der Apache License 2.0 lizenziert. Dieses Projekt ist unter der Lizenz der . Apache Lizenz 2.0