"Moln av tankar": hur man bygger ett minne av användaren som för människor samman och inte förlorar integriteten
Kort om det viktigaste (BLUF)
Att komma ihåg användaren är en dubbelbottnad uppgift: att koppla ihop människor med deras tankar är användbart, men en läcka dödar förtroendet för produkten för alltid. Vi visar hur lagren i "Tankemolnet" är ordnade, varför fail-closed är viktigare än det verkar och vilka avslöjandekanaler som är strängare än andra.
Om själva produkten - "Moln av tankar" i NeuralSpace — vi har redan berättat för dig: systemet samlar in vad det vet om dig och, efter ömsesidigt samtycke, samlar de som har samma intressen ("Jag letar efter en 3D-modellerare" ↔ "Jag gör 3D"). Här - ca ingenjörssidan: Hur man förhindrar att användbart användarminne blir en läcka. Detta visade sig vara mer intressant än själva funktionen.
Dubbelbottenproblem
Jag vill ha två saker samtidigt, och de motsäger varandra:
- Rik profil. För att föra människor samman måste du känna till fakta: vad han gör, vad han letar efter, vad han erbjuder.
- Sekretess som standard. Ingen gick med på att hans korrespondens skulle bli offentlig. Läcka = förlorat förtroende och brott mot 152-FZ.
En naiv implementering ("låt oss samla allt och starta en match") bryter punkt 2 direkt. Bra arkitektur är byggd runt fail-closed: Stängd som standard, avslöjas endast med uttryckligt samtycke och verifierad på kodnivå, inte ett "vi lovar."
Lager

1. Samla fakta. Två källor: strukturella fakta (generationstyper, aktivitet - opersonlig) och utdrag från chattkorrespondens. Den andra är den mest känsliga, så den är gated separat chattminne vippbrytare hos användaren. Stängde av det - extraktion från korrespondens förekommer inte alls. Viktigt: denna grind Inte knuten till en prenumeration på betalda funktioner – integritet ska inte säljas.
2. Kategorier är förbjudna. Begäran om systeminsamling utesluter känsliga kategorier under 152-FZ (hälsa, politiska och religiösa åsikter etc.) – de faller inte in i molnet, även om de kommer upp i en konversation. Detta är inte ett efterfilter, utan en regel under extraktionsstadiet.
3. Dubbel samtyckesmatchning. Två personer har samma intressen - system Inte visar kontakter automatiskt. Hon erbjuder en introduktion till båda parter; kontakten öppnar endast när både överens om. Detta skyddar mot scenariot "min chattförfrågan dök upp på en främling tillsammans med mitt telefonnummer".
4. Undantag för uttryckliga förklaringar. Subtil poäng. Om en person själv, offentligt, i en chatt säger "Jag säljer en tjänst, vem som behöver den, skriv @nick" - att be om samtycke en andra gång är absurt, han har redan gett det. Sådan offentligt tillåten kontakt erkänns separat och avslöjas omedelbart för den berörda parten. Kontakten är välkänd (telegram med och utan @, telefon i valfritt format, länkar), men avslöjandevillkor - exakt uttryckligt offentligt tillstånd, och inte bara förekomsten av kontakt i texten.
Varför fail-closed är viktigare än det verkar
Frestelsen är att göra skydd med en "visa/visa ej"-flagga på gränssnittsnivå. Detta är falskt: varje bugg i UI-logik = läcka. Vi gjorde det annorlunda - fakta som det inte finns något samtycke till ingår inte fysiskt i profilen vid monteringsstadiet. Inget avtal - texter av önskemål och referenser i brevet och matchning slå inte alls, och inte "de kommer dit, men vi gömmer dem." Skillnaden är grundläggande: i det första fallet, en glömd kontroll = en läcka, i det andra - helt enkelt en brist på data.
Regeln vi skulle ge alla som bygger ett system som detta är: standard - stängd, avslöjande - positiv användaråtgärd, verifiering - så nära datakällan som möjligt, inte skärmen.
Avslöjandekanaler - av varierande svårighetsgrad
- I chatten, på begäran av användaren själv - opersonliga fakta och redan offentliga ledtrådar är lättare tillgängliga: personen själv frågade.
- Proaktiv post (systemet självt skriver "det finns en matchning") - striktare, endast genom prenumeration och dubbelt samtycke.
Logiken är enkel: ju mindre användaren förväntar sig avslöjande, desto högre ribban för samtycke.
Bottom line
Det svåraste här är inte maskininlärning, utan dataflödesdisciplin. Om du ger rekommendationer eller matchar på användardata är det intressant att diskutera var du placerar samtyckeskontrollen. Du kan se vad systemet vet om dig i avsnittet privatliv.

Vanliga frågor (FAQ)
Fråga: Hur får man det bästa resultatet från ett neuralt nätverk?
Svar: Använd detaljerade uppmaningar (beskrivningar) på engelska, ställ in stilen och detaljerna för scenen.
Fråga: Kan dessa material användas för kommersiella ändamål?
Svar: Ja, det genererade innehållet är helt och hållet ditt.