背景
在現(xiàn)代企業(yè)中,信息管理對(duì)企業(yè)的發(fā)展至關(guān)重要。企業(yè)內(nèi)部的信息包括了業(yè)務(wù)規(guī)范、操作流程、行業(yè)信息等方面,但這些信息通常分散在各個(gè)部門(mén)和人員之中,難以有效地被整合和利用。為了解決這個(gè)問(wèn)題,我們希望通過(guò)使用人工智能技術(shù),構(gòu)建一個(gè)內(nèi)部信息問(wèn)答 AI 接口,使得員工可以快速地獲取所需的信息,提高工作效率。
實(shí)現(xiàn)功能
本文中,我們將介紹如何通過(guò) OpenAI 的 embedding 功能,結(jié)合公司業(yè)務(wù)規(guī)范,實(shí)現(xiàn)一個(gè)內(nèi)部信息問(wèn)答 AI 接口。該接口具備以下功能:
- 可以針對(duì)公司內(nèi)部的業(yè)務(wù)規(guī)范、操作流程等信息進(jìn)行問(wèn)答;
- 員工可以在內(nèi)部的系統(tǒng)界面中方便地使用,提高工作效率。
技術(shù)架構(gòu)
我們使用了 OpenAI 的 embedding 技術(shù)來(lái)實(shí)現(xiàn)這個(gè)內(nèi)部信息問(wèn)答 AI 接口。具體來(lái)說(shuō),我們首先需要將公司內(nèi)部的需要共識(shí)的業(yè)務(wù)規(guī)范、操作流程等信息進(jìn)行向量化處理。這個(gè)過(guò)程需要使用一個(gè)預(yù)訓(xùn)練好的語(yǔ)言模型,例如 GPT的ada模型。然后,我們將員工提供的問(wèn)題也進(jìn)行向量化處理,然后使用一個(gè)相似度計(jì)算方法,比如余弦相似度,來(lái)計(jì)算員工提供的問(wèn)題和每個(gè)信息的相似度,從而找到可能內(nèi)容信息,再由更強(qiáng)大的GTP-3.5模型分析給出最佳答案。
整個(gè)技術(shù)架構(gòu)如下圖所示:

設(shè)計(jì)細(xì)節(jié)
向量化處理
首先,我們需要將公司內(nèi)部的所有業(yè)務(wù)規(guī)范、操作流程等信息進(jìn)行向量化。我們可以使用一個(gè)預(yù)訓(xùn)練好的語(yǔ)言模型,例如 text-embedding-ada-002,來(lái)實(shí)現(xiàn)這個(gè)向量化過(guò)程。具體來(lái)說(shuō),我們可以將每一條業(yè)務(wù)規(guī)范、操作流程等信息先根據(jù)語(yǔ)意進(jìn)行分段拆分,在將每一段作為一個(gè)輸入,然后使用 text-embedding-ada-002模型來(lái)生成一個(gè)對(duì)應(yīng)的編碼向量。
這個(gè)過(guò)程可以使用 OpenAI 的 API 來(lái)實(shí)現(xiàn)。我們需要調(diào)用 API 的 embeddings 方法,傳入業(yè)務(wù)規(guī)范或操作流程等信息,以及一些其他參數(shù),例如 model(選擇預(yù)訓(xùn)練的語(yǔ)言模型)、input(輸入的文本信息)。調(diào)用 embeddings 方法后,API 將返回一個(gè)編碼向量,我們可以將這個(gè)編碼向量保存在數(shù)據(jù)庫(kù)中,以便后續(xù)的相似度計(jì)算。
以下是調(diào)用 embeddings 方法的示例代碼:
import openai
openai.api_key = "YOUR_API_KEY"
def embedding_text(text, model):
response = openai.Embedding.create(
input=text,
model=model
)
embeddings = response['data'][0]['embedding']
return embeddings
# 使用 ada 編碼一條業(yè)務(wù)規(guī)范
business_rule = "在訂單完成前,顧客可以隨時(shí)取消訂單。"
model = "text-embedding-ada-002"
encoding = embedding_text(business_rule, model)
print(encoding)
相似度計(jì)算
一旦我們獲得了業(yè)務(wù)規(guī)范、操作流程等信息的編碼向量,我們就可以使用一個(gè)相似度計(jì)算方法,例如余弦相似度,來(lái)計(jì)算員工提供的問(wèn)題和每個(gè)信息的相似度。具體來(lái)說(shuō),我們可以將員工提供的問(wèn)題也進(jìn)行編碼,然后將問(wèn)題的編碼向量和每個(gè)信息的編碼向量計(jì)算余弦相似度,得到一個(gè)相似度得分。得分最高的信息就是最佳答案。
以下是以我們已經(jīng)在pinecone中定義了算法模型為余弦相似度的index,調(diào)用的示例代碼:
import pinecone
# initialize connection to pinecone (get API key at app.pinecone.io)
pinecone.init(
api_key="YOUR_API_KEY",
environment="YOUR_ENV" # find next to API key in console
)
# check if 'openai' index already exists (only create index if not)
if 'openai' not in pinecone.list_indexes():
pinecone.create_index('openai', dimension=len(embeds[0]))
# connect to index
index = pinecone.Index('openai')
res = index.query([xq], top_k=5, include_metadata=True)
for match in res['matches']:
print(f"{match['score']:.2f}: {match['metadata']['text']}")
多類(lèi)型數(shù)據(jù)管理
對(duì)于信息的分類(lèi),不同場(chǎng)景下的規(guī)范要求,是多樣的。因此我們還需要在獲取業(yè)務(wù)信息時(shí)加以區(qū)分。對(duì)于系統(tǒng)來(lái)說(shuō),我們可以通過(guò)提問(wèn)數(shù)據(jù)的來(lái)源或場(chǎng)景查詢(xún)不同的業(yè)務(wù)領(lǐng)域信息。
如下是個(gè)簡(jiǎn)易的嵌入信息管理后臺(tái),用來(lái)管理啟用和新增我們的自定義數(shù)據(jù):


可以看到我們以不同的用戶(hù)id、數(shù)據(jù)狀態(tài)作為了數(shù)據(jù)匹配的范圍控制。
在實(shí)現(xiàn)了內(nèi)部信息問(wèn)答 AI 接口后,我們可以考慮進(jìn)一步擴(kuò)展其功能。例如,我們可以使用自然語(yǔ)言生成技術(shù)來(lái)自動(dòng)生成業(yè)務(wù)規(guī)范、操作流程等信息,集成到已有的軟件系統(tǒng)中,以減輕員工的工作負(fù)擔(dān)。
我們還可以將接口整合到公司已有的可對(duì)話系統(tǒng)中,以便員工可以直接在聊天窗口中提問(wèn),并且可以獲得更加個(gè)性化的回答。

后續(xù)規(guī)劃
我們還可以考慮將接口擴(kuò)展到公司的客戶(hù)服務(wù)中,以幫助客戶(hù)更快地解決問(wèn)題,提高客戶(hù)滿(mǎn)意度。
在技術(shù)方面,我們可以探索更先進(jìn)的自然語(yǔ)言處理技術(shù),例如預(yù)訓(xùn)練的語(yǔ)言模型 GPT-3,以提高接口的準(zhǔn)確性和覆蓋面。我們還可以探索更高效的相似度計(jì)算方法,以便能夠更快地響應(yīng)員工的問(wèn)題。此外,我們還可以使用監(jiān)督學(xué)習(xí)技術(shù),例如分類(lèi)器和回歸器,以便更好地處理一些特定的問(wèn)題類(lèi)型,例如價(jià)格計(jì)算、庫(kù)存查詢(xún)等等。
總之,通過(guò)使用 OpenAI 的 embedding 功能,我們實(shí)現(xiàn)了一個(gè)內(nèi)部信息問(wèn)答 AI 接口,幫助員工更快地解決問(wèn)題,提高工作效率。隨著技術(shù)的不斷發(fā)展,這種接口的功能將越來(lái)越強(qiáng)大,為企業(yè)帶來(lái)更多的價(jià)值。