陳敏敏:大家好,我是精準(zhǔn)化架構(gòu)部門負(fù)責(zé)人,我們部門負(fù)責(zé)人還有另外一個(gè)。我講千人千面與實(shí)時(shí)意圖實(shí)踐的相關(guān)東西。我們的基礎(chǔ)化用了一些實(shí)時(shí)相關(guān)的從目前來(lái)講,目的還是用得比較多的,我們看一下。在講之前我先自我介紹,我主要是做推薦、營(yíng)銷架構(gòu)方面的東西,我們也出本一本書(shū),叫做技術(shù)內(nèi)幕,也出口了臺(tái)灣,在京東上面評(píng)價(jià)也是可以的。
下面進(jìn)入我們的正題,我這邊主要講架構(gòu),架構(gòu)我主要是從業(yè)務(wù)架構(gòu),我們推薦平臺(tái)主要包含哪些東西場(chǎng)景方面,然后通過(guò)我們的實(shí)時(shí)意圖想講一下我們的基礎(chǔ)架構(gòu)和業(yè)務(wù)架構(gòu),但是可能講的不全面,稍微帶一點(diǎn)。
首先我講講數(shù)據(jù)怎么用,很多企業(yè)在數(shù)據(jù)采集方面可能還不是很重視,如果把數(shù)據(jù)采集做很方面,像我后面主要講的推薦相關(guān),它其實(shí)可以做很多東西,像廣告投放,讓外面更加精準(zhǔn)華,可以做一些個(gè)性化搜索,可以調(diào)整商品的貨架,更加高效,還可以做營(yíng)銷方面,七十從數(shù)據(jù),挖掘出很多一些應(yīng)用場(chǎng)景。其實(shí)我們這邊主要還是從圈里,挖掘一些知識(shí)的數(shù)據(jù),再接受一些商品、用戶的一些數(shù)據(jù),綜合來(lái)做了一些應(yīng)用。下面我們來(lái)看一下,我們的推薦的產(chǎn)品架構(gòu),一個(gè)業(yè)務(wù)架構(gòu)。
我們推薦已經(jīng)做兩輪了,從開(kāi)始的過(guò)濾,現(xiàn)在行業(yè)加了很多推薦方式。像我下面主要講的,用戶場(chǎng)景的一些信息推薦我在10月份講,那時(shí)候用了18個(gè)相關(guān)的技術(shù),我們也做了一些推薦。跟機(jī)構(gòu)相關(guān),因?yàn)楹芏嘤脩糍?gòu)買這些是很明顯的,特別像一些我們也挖掘了一些用戶,能夠等到推薦給用戶。我們也挖掘出了一些TH的相關(guān),這個(gè)主要是來(lái)解決,還有一些主題推薦也是比較流行的一個(gè)。從題目里面,可以關(guān)聯(lián)到主題上面,可以跟世界相結(jié)合,一些熱點(diǎn)。至于推什么,我們其實(shí)前期也是做了一個(gè)畫像,后來(lái)我們做也是遇到了一些瓶頸,更新時(shí)間越來(lái)越短,后來(lái)也碰到一些瓶頸,當(dāng)時(shí)的話,主要是想把畫像更新,發(fā)現(xiàn)其實(shí)更新時(shí)間想要達(dá)到很好效果的話,還是很難的,一些實(shí)時(shí)相關(guān)的技術(shù)。后來(lái)架構(gòu)的話,從技術(shù)層面主要是技術(shù)和應(yīng)用架構(gòu)像基礎(chǔ)架構(gòu)主要是在做平衡。下午我這碰到一個(gè)問(wèn)題,你的辦法和你的數(shù)據(jù)量,還有一個(gè)實(shí)時(shí)三者要平衡,就是說(shuō)你沒(méi)有辦法保證這三種東西全部滿足,這架構(gòu)里面無(wú)論像CIP還是像別的,很多其實(shí)主要是在尋找一個(gè)平衡,它不像應(yīng)用架構(gòu),應(yīng)用架構(gòu)一個(gè)抽象的,你把一些模塊更加抽象。你很多架構(gòu)是你主要考慮是一個(gè)平衡問(wèn)題,把那幾個(gè)點(diǎn)都平衡好。
我們也是在畫像,遇到一些瓶頸的時(shí)候,慢慢延伸出一個(gè)用戶議題。主要來(lái)捕捉用戶的一些行為,給用戶做一些更加精準(zhǔn)化的推薦,也算是實(shí)時(shí)推薦一種。整個(gè)推薦算法,它其實(shí)關(guān)注東西比較多,有的是關(guān)注轉(zhuǎn)換力,有些是交叉銷售。tradein主要是提升用戶的連續(xù)性,觀點(diǎn)不一樣像我們電商從首頁(yè)到搜索頁(yè)到詳情頁(yè),每個(gè)頁(yè)面用戶行為是不一樣的,有些是你要通過(guò)搜索頁(yè),根據(jù)不同的一些場(chǎng)景,我們可能會(huì)引用我們不同的算法,無(wú)論是主題推薦還是協(xié)同過(guò)濾,還是一些周期性能。我們這個(gè)東西到后面也會(huì)盡量調(diào)整,調(diào)整的話,代價(jià)也是比較大的,我們盡量讓這個(gè)代價(jià)更少。
我們開(kāi)發(fā)了一些后臺(tái)系統(tǒng),我們還是一號(hào)店首頁(yè),通過(guò)配置的方式,讓它接入,我們這邊有詳情頁(yè),還有一號(hào)店的詳情,它PC可以通過(guò)配置把不同的算法通過(guò)中間畫像還是看的這種相似的配進(jìn)來(lái),最終生成我們這樣一個(gè)欄位。
右上交通過(guò)我們后臺(tái)系統(tǒng)配置出來(lái)的,我們像下面也是我們后臺(tái)系統(tǒng),我們可以讓這個(gè)走畫像還是走意圖,過(guò)濾一些東西??梢詮南旅姹容^用戶配置出來(lái),如果走詳情,有些數(shù)據(jù)比較稀缺沒(méi)有商品,需要補(bǔ)一些,目前像一些天氣也是瓦的比較齊,達(dá)到了商品身上,同時(shí)也在詳情頁(yè)標(biāo)題也挖了相關(guān)的詞,打到商品上。所以說(shuō)本身商品數(shù)據(jù)也是比較全。
最后我們看一下我們的一個(gè)引擎,80頁(yè)比較多,我這邊先講一個(gè)場(chǎng)景,后面主要講意圖。我們這邊一個(gè)場(chǎng)景,主要是根據(jù)群體,我們會(huì)通過(guò)地址挖一些校園、小區(qū)、公司我們也做一些分析,一些學(xué)校購(gòu)買的情況不一樣,我們也做了一些細(xì)分,如果你是一個(gè)學(xué)生用戶的話,可能你跑到一號(hào)店你可以你學(xué)校里面其他人買什么東西,把這部分群體好的東西也會(huì)推薦給你,看到你周圍學(xué)校一些學(xué)生買的什么。
右下角我不是學(xué)生,我是已經(jīng)工作的了,也可以看到小區(qū)旁邊人買什么東西,這樣的話,也達(dá)到這樣一個(gè)千人千面。
像一些細(xì)節(jié)的話,像校園、公司我們也是花了不少精力,公司、小區(qū)都花了精力在做這一塊。
我們?cè)倏匆幌潞竺嬷饕膶?shí)時(shí)意圖。這個(gè)是我們實(shí)時(shí)意圖簡(jiǎn)單的圖。我們數(shù)據(jù)兩個(gè)地方,一個(gè)是從基本用戶的一些瀏覽收藏,用戶在上面做了一些行為以后,開(kāi)始跟產(chǎn)品相關(guān),把它轉(zhuǎn)成跟利潤(rùn)相關(guān),通過(guò)一些后續(xù)的服務(wù)去處理一些。
當(dāng)然其實(shí)里面有個(gè)訂單數(shù)據(jù),我們也不是走的Kafka主要是推送,它的生產(chǎn)者是推的,它是一個(gè)推的模式。把訂單接過(guò)去,也會(huì)遇到一些問(wèn)題,所以說(shuō)你們也可以想像,為什么我這個(gè)訂單沒(méi)有走入Kafka,我們用了一個(gè)一號(hào)店自主研發(fā)的,可能也是碰到了一些問(wèn)題。
比較重要的,在里面實(shí)現(xiàn)了一些意圖的計(jì)算,把那部分意圖會(huì)存在里面,我們最后一個(gè)做一個(gè)實(shí)時(shí)推薦,你完成或者未完成,做一個(gè)優(yōu)先排序,有會(huì)推到我們的自主研發(fā)的頁(yè)面,是我們一號(hào)店自主研發(fā)的。
可能剛剛也講到,訂單也放到Kafka,它推拉模式,你拉它Kafka主要是拉取,推和拉的話,可能就像一個(gè)我反正我就推,一個(gè)像我控制速率,如果推模式,可能是一個(gè)最快,比較快的方式,但是它吞吐量也比較大,所以說(shuō)像我這個(gè)訂單如果沒(méi)有實(shí)時(shí)的意圖,可能我已經(jīng)買了然后你再推這個(gè)東西,也會(huì)影響用戶。像我從Kafka或者我這邊也是訂單高的時(shí)候,數(shù)據(jù)比較大的時(shí)候,那個(gè)時(shí)候訂單已經(jīng)完成了,但是你還在推訂單可能會(huì)帶來(lái)一些不好的商品列表。
其實(shí)像我們這邊,最后一個(gè)就是實(shí)時(shí)推薦,像我們必要的,我們是把原始存在于我們一個(gè)緩存里面,這樣可以更加自定義意圖或者是一些數(shù)據(jù)。
這個(gè)是我們意圖的計(jì)算過(guò)程,我們意圖,主要也是采集了用戶在網(wǎng)站上的使用,像他加車的時(shí)候是意圖完成了一半。所以說(shuō),我們這邊當(dāng)用戶在瀏覽、收藏、搜索時(shí),我們會(huì)更新整個(gè)未完成的意圖和完成一半的意圖,這個(gè)更新簡(jiǎn)單的算法應(yīng)該是在下面這種,我們每次用戶有新的行為上來(lái)的時(shí)候,我們可能要把老的排除掉,這樣會(huì)引入一個(gè)遺忘因子,可能你幾天沒(méi)有操作的話,可能對(duì)這個(gè)商品興趣度慢慢變低,當(dāng)我們最后在瀏覽、收藏的時(shí)候,完成一半和沒(méi)有完成的時(shí)候,我們會(huì)更新整個(gè)商品。當(dāng)這個(gè)商品和我當(dāng)前模式相同的時(shí)候,跟前面的衰減,再加上我當(dāng)前的意圖。我當(dāng)前意圖瀏覽收藏全部不一樣,瀏覽、收藏是14根據(jù)不同的行為,如果我這個(gè)意圖,跟當(dāng)前意圖一樣,而且跟前面也是一樣的,那我可能就不用加上當(dāng)前的,我只是把當(dāng)前的衰竭一下,總共有三個(gè),一個(gè)是跟當(dāng)前一樣,一個(gè)是跟當(dāng)前行為不一樣,一個(gè)是跟行為屬于當(dāng)前行為。遺忘因子后面會(huì)慢慢加入其他的,讓它判斷更加準(zhǔn)確。
我通過(guò)意圖來(lái)稍微介紹一下,技術(shù)架構(gòu),這個(gè)東西很多人也知道,一個(gè)比較常見(jiàn)的,最少一次、最多一次、恰好一次。最少一次消息可能會(huì)再次發(fā)送,當(dāng)我最多一次的時(shí)候,我肯定要忍受系丟失的情況發(fā)生,在基礎(chǔ)架構(gòu)里面去尋找一個(gè)平衡,你怎么把這個(gè)東西平衡好,你可能要有一些業(yè)務(wù),還有恰好一次,恰好一次實(shí)現(xiàn)的代價(jià)也高,目前系統(tǒng)也實(shí)現(xiàn)了,它也是目前系統(tǒng)里面比較拿點(diǎn)的個(gè)東西,一個(gè)是恰好一次,還有一個(gè)要說(shuō)保證校區(qū)的順序性,整個(gè)分布時(shí)期。
我們看一下實(shí)時(shí)框架,其實(shí)目前我們有些產(chǎn)品,也是隨著一些業(yè)務(wù)產(chǎn)品上來(lái),我們自然而然引用了一些,我們可以看到Kafka消息傳遞形式。我們可以看到,只是一個(gè)至少一次,如果恰好一次,要用另外一塊。我們數(shù)據(jù)研發(fā),一號(hào)店自主研發(fā),同時(shí)實(shí)現(xiàn)了至少一次和最多一次。
我們來(lái)看一下一號(hào)店自主研發(fā)的列表,其實(shí)消息隊(duì)列的話,開(kāi)始把訂單全部放在里面,是一個(gè)拉攏,我科一控制速錄,像我訂單我要最快時(shí)間知道,還是以推的方式比較好一點(diǎn)。像我們也引入了一些消息堆積,這樣可以方便一些查詢一些例子消息??赡芨鶮afka還是有一些差距,現(xiàn)在消息隊(duì)列也比較多,光推它就有組合,推中拉推、推中帶拉這種,可能還會(huì)引入一些自己的。是我們一號(hào)店這邊自主開(kāi)發(fā)。
最后講一下應(yīng)用架構(gòu),前面主要是我們推薦意圖里面的基礎(chǔ)架構(gòu),最后是應(yīng)用架構(gòu),跟前面不一樣。還是一個(gè)抽象,怎么抽象?把一些模塊,像我們意圖里面把網(wǎng)頁(yè)上各種行為,加瀏覽的東西,就要突出出來(lái),比較好的,就是迭代模式,我們讓它實(shí)現(xiàn)迭代,這樣我們就可以把一些基礎(chǔ)的瀏覽一些收藏的東西,可以屏蔽掉。當(dāng)我需要搜集哪些商品時(shí),我主要引入最后收藏的具體圈。我這個(gè)基礎(chǔ)的分析,可以去實(shí)現(xiàn)我們迭代技術(shù),我們具體的搜索,也會(huì)去實(shí)現(xiàn)相對(duì)介紹,具體的細(xì)節(jié)會(huì)在某一個(gè)收藏瀏覽里面實(shí)現(xiàn)。這樣的話,讓它更加抽象,我們后面也引入了不少一些應(yīng)用架構(gòu),設(shè)計(jì)方面的東西,可能今天我就是稍微拋磚引玉講一下,主要講架構(gòu)這個(gè)事情。架構(gòu)從業(yè)務(wù)到基礎(chǔ)到應(yīng)用,我們這邊可能都會(huì)涉及到一點(diǎn),通過(guò)這個(gè)數(shù)據(jù)來(lái)闡述一下。
我這邊差不多了。