A história da SmartNews - de um utilizador Milvus a um colaborador ativo
Este artigo foi traduzido por Angela Ni.
A informação está em todo o lado nas nossas vidas. O Meta (anteriormente conhecido como Facebook), o Instagram, o Twitter e outras plataformas de redes sociais tornam os fluxos de informação ainda mais omnipresentes. Por conseguinte, os motores que lidam com esses fluxos de informação tornaram-se uma necessidade na maior parte da arquitetura dos sistemas. No entanto, como utilizador de plataformas de redes sociais e aplicações relevantes, aposto que deve ter sido incomodado por artigos, notícias, memes e outros conteúdos duplicados. A exposição a conteúdos duplicados dificulta o processo de recuperação de informação e conduz a uma má experiência do utilizador.
Para um produto que lida com fluxos de informação, é altamente prioritário que os criadores encontrem um processador de dados flexível que possa ser integrado sem problemas na arquitetura do sistema para deduplicar notícias ou anúncios idênticos.
A SmartNews, avaliada em 2 mil milhões de dólares americanos, é a empresa de aplicações noticiosas mais valorizada dos EUA. A SmartNews era um utilizador da Milvus, uma base de dados vetorial de código aberto, mas mais tarde tornou-se um colaborador ativo do projeto Milvus.
Este artigo partilha a história da SmartNews e explica por que razão decidiu contribuir para o projeto Milvus.
Uma visão geral da SmartNews
A SmartNews, fundada em 2012, tem sede em Tóquio, no Japão. A aplicação de notícias desenvolvida pela SmartNews foi sempre muito bem classificada no mercado japonês. A SmartNews é a aplicação de notícias com o crescimento mais rápido e também possui uma elevada viscosidade de utilizadores no mercado dos EUA. De acordo com as estatísticas da APP Annie, a duração média mensal da sessão da SmartNews ficou em primeiro lugar entre todas as aplicações de notícias até ao final de julho de 2021, superior à duração acumulada da sessão da AppleNews e da Google News.
Com o rápido crescimento da base de utilizadores e da viscosidade, a SmartNews tem de enfrentar mais desafios em termos de mecanismo de recomendação e algoritmo de IA. Esses desafios incluem a utilização de caraterísticas discretas maciças na aprendizagem automática (ML) em grande escala, a aceleração da consulta de dados não estruturados com pesquisa de semelhança de vectores e muito mais.
No início de 2021, a equipa de algoritmos de anúncios dinâmicos da SmartNews enviou um pedido à equipa de infraestruturas de IA para otimizar as funções de recuperação e consulta de anúncios. Após dois meses de pesquisa, o engenheiro de infraestrutura de IA Shu decidiu usar o Milvus, um banco de dados vetorial de código aberto que suporta vários índices e métricas de similaridade e atualizações de dados online. O Milvus tem a confiança de mais de mil organizações em todo o mundo.
Recomendação de anúncios com base na pesquisa de semelhanças vectoriais
A base de dados de vectores de código aberto Milvus é adoptada no sistema de anúncios SmartNews para fazer corresponder e recomendar aos seus utilizadores anúncios dinâmicos a partir de um conjunto de dados à escala de 10 milhões. Ao fazê-lo, a SmartNews pode criar uma relação de mapeamento entre dois conjuntos de dados anteriormente incomparáveis - dados do utilizador e dados de anúncios. No segundo trimestre de 2021, Shu conseguiu implantar o Milvus 1.0 no Kubernetes. Saiba mais sobre como implantar o Milvus.
img
Após a implementação bem-sucedida do Milvus 1.0, o primeiro projeto a utilizar o Milvus foi o projeto de recolha de anúncios iniciado pela equipa de anúncios da SmartNews. Durante a fase inicial, o conjunto de dados de anúncios estava numa escala de um milhão. Entretanto, a latência do P99 era rigorosamente controlada em menos de 10 milissegundos.
Em junho de 2021, Shu e os seus colegas da equipa de algoritmos aplicaram o Milvus a mais cenários empresariais e tentaram a agregação de dados e a atualização de dados/índice online em tempo real.
Até agora, a Milvus, a base de dados vetorial de código aberto, tem sido utilizada em vários cenários empresariais na SmartNews, incluindo a recomendação de anúncios.
De utilizador a colaborador ativo
Durante a integração do Milvus na arquitetura do produto Smartnews, Shu e outros programadores apresentaram pedidos de funções como hot reload, item TTL (time-to-live), atualização/substituição de itens, entre outras. Estas são também funções desejadas por muitos utilizadores da comunidade Milvus. Por conseguinte, Dennis Zhao, chefe da equipa de infra-estruturas de IA da SmartNews, decidiu desenvolver e contribuir com a função de carregamento a quente para a comunidade. Dennis acredita que "a equipa da SmartNews tem beneficiado da comunidade Milvus, pelo que estamos mais do que dispostos a contribuir se tivermos algo para partilhar com a comunidade".
O recarregamento de dados permite a edição de código durante a execução do código. Com a ajuda do recarregamento de dados, os programadores já não precisam de parar num ponto de interrupção ou reiniciar a aplicação. Em vez disso, podem editar o código diretamente e ver o resultado em tempo real.
No final de julho, Yusup, engenheiro da SmartNews, propôs a ideia de utilizar um alias de coleção para conseguir um hot reload.
Criar um alias de coleção refere-se à especificação de nomes de alias para uma coleção. Uma coleção pode ter vários aliases. No entanto, um alias corresponde a um máximo de uma coleção. Basta fazer uma analogia entre uma coleção e um cacifo. Um cacifo, tal como uma coleção, tem o seu próprio número e posição, que permanecerão sempre inalterados. No entanto, pode sempre colocar e retirar coisas diferentes do cacifo. Da mesma forma, o nome da coleção é fixo, mas os dados da coleção são dinâmicos. É sempre possível inserir ou eliminar vectores numa coleção, uma vez que a eliminação de dados é suportada na versão Milvus pré-GA.
No caso da atividade publicitária SmartNews, são inseridos ou actualizados cerca de 100 milhões de vectores à medida que são gerados novos vectores de anúncios dinâmicos. Existem várias soluções para este problema:
- Solução 1: eliminar primeiro os dados antigos e inserir os novos.
- Solução 2: criar uma nova coleção para os novos dados.
- Solução 3: utilizar um alias de coleção.
Para a solução 1, uma das deficiências mais evidentes é o facto de ser extremamente morosa, especialmente quando o conjunto de dados a atualizar é enorme. Geralmente, são necessárias horas para atualizar um conjunto de dados à escala de 100 milhões.
Quanto à solução 2, o problema é que a nova coleção não está imediatamente disponível para pesquisa. Ou seja, uma coleção não pode ser pesquisada durante o carregamento. Além disso, o Milvus não permite que duas colecções usem o mesmo nome de coleção. A mudança para uma nova coleção exigiria sempre que os utilizadores modificassem manualmente o código do lado do cliente. Ou seja, os utilizadores teriam de rever o valor do parâmetro collection_name
sempre que precisassem de mudar de coleção.
A solução 3 seria a solução milagrosa. Basta inserir os novos dados numa nova coleção e utilizar o alias de coleção. Ao fazê-lo, basta trocar o alias de coleção sempre que for necessário mudar de coleção para efetuar a pesquisa. Não precisa de se esforçar mais para rever o código. Esta solução poupa-lhe os problemas mencionados nas duas soluções anteriores.
Yusup partiu deste pedido e ajudou toda a equipa SmartNews a compreender a arquitetura do Milvus. Após um mês e meio, o projeto Milvus recebeu um PR sobre hot reload da Yusup. E mais tarde, esta função está oficialmente disponível juntamente com o lançamento do Milvus 2.0.0-RC7.
Atualmente, a equipa de infra-estruturas de IA está a tomar a iniciativa de implementar o Milvus 2.0 e de migrar gradualmente todos os dados do Milvus 1.0 para o 2.0.
Alias de coleção img_collection
O suporte para o nome alternativo de coleção pode melhorar significativamente a experiência do utilizador, especialmente para as grandes empresas da Internet com grandes volumes de pedidos de utilizadores. Chenglong Li, engenheiro de dados da comunidade Milvus, que ajudou a construir a ponte entre o Milvus e o Smartnews, disse: "A função de alias de coleção surge de um pedido real da SmartNews, um utilizador do Milvus. E a SmartNews contribuiu com o código para a comunidade Milvus. Este ato de reciprocidade é um excelente exemplo do espírito de código aberto: da comunidade e para a comunidade. Esperamos ver mais colaboradores como a SmartNews e construir em conjunto uma comunidade Milvus mais próspera."
"Atualmente, parte do negócio da publicidade está a adotar o Milvus como base de dados vetorial offline. O lançamento oficial do Mivus 2.0 está a aproximar-se e esperamos poder utilizar o Milvus para criar sistemas mais fiáveis e fornecer serviços em tempo real para mais cenários empresariais", afirmou Dennis.
Atualização: O Milvus 2.0 já está disponível para todos! Saiba mais
- Uma visão geral da SmartNews
- Recomendação de anúncios com base na pesquisa de semelhanças vectoriais
- De utilizador a colaborador ativo
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word