精品一区二区三区在线成人,欧美精产国品一二三区,Ji大巴进入女人66h,亚洲春色在线视频

如何使用Weaviate構(gòu)建語(yǔ)義搜索引擎

譯文 精選
人工智能 數(shù)據(jù)庫(kù)
Weaviate是一款開(kāi)源向量數(shù)據(jù)庫(kù),專門(mén)用于存儲(chǔ)和處理以向量表示的高維數(shù)據(jù),例如文本、圖像或視頻等。Weaviate允許企業(yè)進(jìn)行語(yǔ)義搜索,創(chuàng)建推薦引擎,并輕松構(gòu)建人工智能模型。

譯者 | 李睿

審校 | 重樓

Weaviate是一款開(kāi)源向量數(shù)據(jù)庫(kù),專為處理高維非結(jié)構(gòu)化數(shù)據(jù)(文本、圖像、視頻)設(shè)計(jì),通過(guò)向量嵌入實(shí)現(xiàn)語(yǔ)義搜索,替代傳統(tǒng)關(guān)鍵字匹配。其核心優(yōu)勢(shì)包括人工智能原生架構(gòu)、分布式擴(kuò)展、基于圖形的模型及混合搜索能力。本文將通過(guò)代碼示例和實(shí)際應(yīng)用,探討Weaviate成為游戲規(guī)則改變者的原因。

人們獲取與關(guān)聯(lián)信息的方式正在經(jīng)歷根本性的轉(zhuǎn)變。在傳統(tǒng)搜索模式中,用戶需要拆分關(guān)鍵詞進(jìn)行檢索,例如輸入舒適”(cozy)和“角落”(nook),而現(xiàn)代語(yǔ)義搜索技術(shù)可以直接輸入舒適的閱讀角落”(cozy reading nooks)將會(huì)呈現(xiàn)出“壁爐旁軟椅”等符合語(yǔ)義關(guān)聯(lián)的視覺(jué)化內(nèi)容。這種基于語(yǔ)義理解的搜索范式,標(biāo)志著信息檢索從機(jī)械式關(guān)鍵詞匹配向自然語(yǔ)言理解的跨越。這一轉(zhuǎn)變至關(guān)重要,因?yàn)樵谌斯ぶ悄軙r(shí)代,圖像、文本、視頻等非結(jié)構(gòu)化數(shù)據(jù)呈現(xiàn)指數(shù)級(jí)增長(zhǎng),傳統(tǒng)數(shù)據(jù)庫(kù)已經(jīng)難以滿足人工智能時(shí)代的需求。

這正是Weaviate發(fā)揮重要作用的地方,并使其成為向量數(shù)據(jù)庫(kù)領(lǐng)域的領(lǐng)導(dǎo)者。憑借其獨(dú)特的功能和性能,Weaviate正在改變企業(yè)使用基于人工智能的見(jiàn)解和數(shù)據(jù)的方式。本文將通過(guò)代碼示例和實(shí)際應(yīng)用,探討Weaviate為何能成為游戲規(guī)則的改變者。

Weaviate是什么?

Weaviate是一款開(kāi)源向量數(shù)據(jù)庫(kù),專門(mén)用于存儲(chǔ)和處理以向量表示的高維數(shù)據(jù),例如文本、圖像或視頻等。Weaviate允許企業(yè)進(jìn)行語(yǔ)義搜索,創(chuàng)建推薦引擎,并輕松構(gòu)建人工智能模型。

Weaviate專注于智能數(shù)據(jù)檢索,而不是依賴于基于每行存儲(chǔ)的列檢索精確數(shù)據(jù)的傳統(tǒng)數(shù)據(jù)庫(kù)。它使用基于機(jī)器學(xué)習(xí)的向量嵌入來(lái)根據(jù)語(yǔ)義找到數(shù)據(jù)點(diǎn)之間的關(guān)系,而不是搜索精確的數(shù)據(jù)匹配。

Weaviate提供了一種簡(jiǎn)單的方法來(lái)構(gòu)建運(yùn)行人工智能模型的應(yīng)用程序,這些模型需要快速有效地處理大量數(shù)據(jù)來(lái)構(gòu)建模型。在Weaviate中存儲(chǔ)和檢索向量嵌入使其成為涉及非結(jié)構(gòu)化數(shù)據(jù)的企業(yè)的理想選擇。

Weaviate的核心原理和架構(gòu)

Weaviate的核心是建立在處理高維數(shù)據(jù)和利用高效和可擴(kuò)展的向量搜索的原則之上。以下是其架構(gòu)的設(shè)計(jì)原則與核心模塊:

  • 人工智能原生和模塊化:Weaviate從設(shè)計(jì)之初就將機(jī)器學(xué)習(xí)模型集成到架構(gòu)中,為其開(kāi)箱即用地生成不同數(shù)據(jù)類型的嵌入(向量)提供支持。模塊化設(shè)計(jì)允許用戶擴(kuò)展功能、集成自定義特性或調(diào)用外部系統(tǒng)。
  • 分布式系統(tǒng):數(shù)據(jù)庫(kù)被設(shè)計(jì)成能夠橫向擴(kuò)展。Weaviate采用無(wú)領(lǐng)導(dǎo)者架構(gòu),這意味著沒(méi)有單點(diǎn)故障。通過(guò)多節(jié)點(diǎn)數(shù)據(jù)復(fù)制實(shí)現(xiàn)高可用性,即使節(jié)點(diǎn)故障也能保障數(shù)據(jù)安全。最終一致性使其適用于云原生及其他環(huán)境。
  • 基于圖形:Weaviate是一種基于圖形的數(shù)據(jù)模型。對(duì)象(向量)通過(guò)它們的關(guān)系連接起來(lái),使得具有復(fù)雜關(guān)系的數(shù)據(jù)易于存儲(chǔ)和查詢,這在推薦系統(tǒng)等應(yīng)用程序中非常重要。
  • 向量存儲(chǔ):Weaviate旨在將數(shù)據(jù)存儲(chǔ)為向量(對(duì)象的數(shù)值表示)。這非常適合支持人工智能的搜索、推薦引擎和所有其他人工智能/機(jī)器學(xué)習(xí)相關(guān)用例。

Weaviate快速入門(mén):實(shí)踐指南

無(wú)論是在構(gòu)建語(yǔ)義搜索引擎、聊天機(jī)器人還是推薦系統(tǒng),這都無(wú)關(guān)緊要。Weaviate快速入門(mén)指南將演示如何連接到Weaviate,攝取向量化內(nèi)容,并提供智能搜索功能,最終通過(guò)使用OpenAI模型的檢索增強(qiáng)生成(RAG)生成上下文感知的答案。

前提條件

確保安裝了最新版本的Python。如果沒(méi)有安裝,可以使用如下命令安裝:

sudo apt update
sudo apt install python3 python3-pip –y

創(chuàng)建并激活虛擬環(huán)境:

python3 -m venv weaviate-env
Source weaviate-env/bin/activate

使用上述代碼,shell提示符現(xiàn)在將顯示虛擬環(huán)境名稱(例如weaviate-env),表明環(huán)境已經(jīng)激活。

步驟1:部署Weaviate

部署Weaviate有兩種方法:

選項(xiàng)1:使用Weaviate云服務(wù)

部署Weaviate的一種方法是使用其云服務(wù):

還要注意WEAVIATE_URL(類似于https://xyz.weaviate.network)以及WEVIATE_API_KEY

選項(xiàng)2:使用Docker Compose在本地運(yùn)行

創(chuàng)建docker- composer .yml

version: '3.4'
services:
 weaviate:
 image: semitechnologies/weaviate:latest
 ports:
 - "8080:8080"
 environment:
 QUERY_DEFAULTS_LIMIT: 25
 AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
 PERSISTENCE_DATA_PATH: './data'
 DEFAULT_VECTORIZER_MODULE: 'text2vec-openai'
 ENABLE_MODULES: 'text2vec-openai,generative-openai'
 OPENAI_APIKEY: 'your-openai-key-here'

配置Weaviate容器與OpenAI模塊和匿名訪問(wèn)。

使用以下命令啟動(dòng)它:

docker-compose up -d

這將以分離模式啟動(dòng)Weaviate服務(wù)器(在后臺(tái)運(yùn)行)。

步驟2:安裝Python依賴項(xiàng)

要安裝程序所需的所有依賴項(xiàng),需要在操作系統(tǒng)的命令行中運(yùn)行以下命令:

pip install weaviate-client openai

這將安裝Weaviate Python客戶機(jī)和OpenAI庫(kù)。

步驟3:設(shè)置環(huán)境變量

export WEAVIATE_URL="https://<your-instance>.weaviate.network"
export WEAVIATE_API_KEY="<your-weaviate-key>"
export OPENAI_API_KEY="<your-openai-key>"

對(duì)于本地部署,不需要WEAVIATE_API_KEY(無(wú)需驗(yàn)證)。

步驟4:連接到Weaviate

import os
import weaviate
from weaviate.classes.init import Auth
client = weaviate.connect_to_weaviate_cloud(
 cluster_url=os.getenv("WEAVIATE_URL"),
 auth_credentials=Auth.api_key(os.getenv("WEAVIATE_API_KEY")),
 headers={"X-OpenAI-Api-Key": os.getenv("OPENAI_API_KEY")}
)
assert client.is_ready(), " Weaviate not ready"
print(" Connected to Weaviate")

前面的代碼使用憑據(jù)連接Weaviate云實(shí)例,并確認(rèn)服務(wù)器已經(jīng)啟動(dòng)并可訪問(wèn)。

對(duì)于本地實(shí)例,使用:

client = weaviate.Client("http://localhost:8080")

這將連接到本地Weaviate實(shí)例。

步驟5:使用嵌入和生成支持定義模式

schema = {
 "classes": [
 {
 "class": "Question",
 "description": "QA dataset",
 "properties": [
 {"name": "question", "dataType": ["text"]},
 {"name": "answer", "dataType": ["text"]},
 {"name": "category", "dataType": ["string"]}
 ],
 "vectorizer": "text2vec-openai",
 "generative": {"module": "generative-openai"}
 }
 ]
}

定義了一個(gè)名為Question的模式,其中包含屬性和基于openai的向量和生成模塊。

client.schema.delete_all() # Clear previous schema (if any)
client.schema.create(schema)
print(" Schema defined")

輸出:

上述語(yǔ)句將模式上傳到Weaviate并確認(rèn)成功。

步驟6:批量插入樣例數(shù)據(jù)

data = [
 {"question":"Only mammal in Proboscidea order?","answer":"Elephant","category":"ANIMALS"},
 {"question":"Organ that stores glycogen?","answer":"Liver","category":"SCIENCE"}
]

創(chuàng)建一個(gè)小型QA數(shù)據(jù)集:

with client.batch as batch:
 batch.batch_size = 20
 for obj in data:
 batch.add_data_object(obj, "Question")

以批處理方式插入數(shù)據(jù)以提高效率:

print(f"Indexed {len(data)} items")

輸出:

確認(rèn)已經(jīng)索引的項(xiàng)目數(shù)量。

步驟7:使用nearText進(jìn)行語(yǔ)義搜索

res = (
 client.query.get("Question", ["question", "answer", "_additional {certainty}"])
 .with_near_text({"concepts": ["largest elephant"], "certainty": 0.7})
 .with_limit(2)
 .do()
)

使用文本向量對(duì)“largest elephant”等概念進(jìn)行語(yǔ)義搜索。僅返回確定性≥0.7且最多2個(gè)結(jié)果的結(jié)果。

print(" Semantic search results:")
for item in res["data"]["Get"]["Question"]:
 q, a, c = item["question"], item["answer"], item["_additional"]["certainty"]
 print(f"- Q: {q} → A: {a} (certainty {c:.2f})")

輸出:

顯示具有確定性分?jǐn)?shù)的結(jié)果。

步驟8:檢索-增強(qiáng)生成(RAG

rag = (
 client.query.get("Question", ["question", "answer"])
 .with_near_text({"concepts": ["animal that weighs a ton"]})
 .with_limit(1)
 .with_generate(single_result=True)
 .do()
)

語(yǔ)義搜索,并要求Weaviate使用OpenAI(通過(guò)generate)生成響應(yīng)。

generated = rag["data"]["Get"]["Question"][0]["generate"]["singleResult"]
print(" RAG answer:", generated)

輸出:

根據(jù)Weaviate數(shù)據(jù)庫(kù)中最接近的匹配項(xiàng)打印生成的答案。

Weaviate的主要特性

Weaviate有許多獨(dú)特的功能,使它在大多數(shù)基于向量的數(shù)據(jù)管理任務(wù)中具有靈活和強(qiáng)大的優(yōu)勢(shì)。

  • 向量搜索:Weaviate可以將數(shù)據(jù)作為向量嵌入進(jìn)行存儲(chǔ)和查詢,從而進(jìn)行語(yǔ)義搜索;它提高了準(zhǔn)確性,因?yàn)榛谝饬x而不是簡(jiǎn)單地匹配關(guān)鍵字來(lái)找到相似的數(shù)據(jù)點(diǎn)。
  • 混合搜索:通過(guò)將向量搜索和傳統(tǒng)的基于關(guān)鍵字的搜索結(jié)合起來(lái),Weaviate提供了更相關(guān)和上下文相關(guān)的結(jié)果,同時(shí)為各種用例提供了更大的靈活性。
  • 可擴(kuò)展的基礎(chǔ)設(shè)施:Weaviate能夠使用單節(jié)點(diǎn)和分布式部署模型進(jìn)行操作;它可以橫向擴(kuò)展以支持非常大的數(shù)據(jù)集,并確保性能不受影響。
  • 人工智能原生架構(gòu):Weaviate旨在與機(jī)器學(xué)習(xí)模型一起工作,支持直接生成嵌入,而無(wú)需通過(guò)額外的平臺(tái)或外部工具。
  • 開(kāi)源:作為開(kāi)源軟件,Weaviate允許一定程度的定制、集成,甚至允許用戶在其持續(xù)發(fā)展中做出貢獻(xiàn)。
  • 可擴(kuò)展性:Weaviate通過(guò)模塊和插件支持可擴(kuò)展性,使用戶能夠從各種機(jī)器學(xué)習(xí)模型和外部數(shù)據(jù)源集成。

Weaviate vs 競(jìng)爭(zhēng)對(duì)手

下表強(qiáng)調(diào)了Weaviate和在向量數(shù)據(jù)庫(kù)領(lǐng)域的一些競(jìng)爭(zhēng)對(duì)手之間的主要區(qū)別。

特性

Weaviate

Pinecone

Milvus

Qdrant

開(kāi)源

混合搜索

是(向量+關(guān)鍵詞)

是(向量+關(guān)鍵詞)

是(向量+關(guān)鍵詞)

分布式架構(gòu)

內(nèi)置AI模型支持

云原生集成

數(shù)據(jù)復(fù)制

如上表所示,Weaviate是唯一提供混合搜索的向量數(shù)據(jù)庫(kù),它既可以進(jìn)行向量搜索,也可以進(jìn)行基于關(guān)鍵字的搜索。因此,有更多的搜索選項(xiàng)可用。Weaviate是開(kāi)源的,不像Pinecone是閉源的。Weaviate的開(kāi)源優(yōu)勢(shì)和透明庫(kù)提供了有益于用戶的定制選項(xiàng)。

特別是,Weaviate將機(jī)器學(xué)習(xí)集成到數(shù)據(jù)庫(kù)中,使其解決方案與競(jìng)爭(zhēng)對(duì)手的解決方案截然不同。

結(jié)論

Weaviate是一款處于行業(yè)前沿的基于向量的數(shù)據(jù)庫(kù),具有革命性的人工智能原生的架構(gòu),旨在處理高維數(shù)據(jù),同時(shí)還結(jié)合了機(jī)器學(xué)習(xí)模型。Weaviate的混合數(shù)據(jù)和搜索功能及其開(kāi)源特性為每個(gè)可想象的行業(yè)中的人工智能應(yīng)用程序提供了強(qiáng)大的解決方案。Weaviate的可擴(kuò)展性和高性能使其成為非結(jié)構(gòu)化數(shù)據(jù)的領(lǐng)先解決方案。從推薦引擎和聊天機(jī)器人到語(yǔ)義搜索引擎,Weaviate充分發(fā)揮其先進(jìn)功能的潛力,幫助開(kāi)發(fā)人員增強(qiáng)他們的人工智能應(yīng)用程序。隨著人工智能解決方案需求的增長(zhǎng);Weaviate在向量數(shù)據(jù)庫(kù)領(lǐng)域的重要性將變得越來(lái)越重要,并將通過(guò)其處理復(fù)雜數(shù)據(jù)集的能力從根本上影響該領(lǐng)域的未來(lái)。

常見(jiàn)問(wèn)題

Q1Weaviate是什么?

答:Weaviate是一款開(kāi)源向量數(shù)據(jù)庫(kù),專為高維數(shù)據(jù)(如文本、圖像或視頻)而設(shè)計(jì),用于實(shí)現(xiàn)語(yǔ)義搜索和人工智能驅(qū)動(dòng)的應(yīng)用程序。

Q2Weaviate與傳統(tǒng)數(shù)據(jù)庫(kù)有何不同?

答:與檢索精確數(shù)據(jù)的傳統(tǒng)數(shù)據(jù)庫(kù)不同,Weaviate使用基于機(jī)器學(xué)習(xí)的向量嵌入來(lái)檢索結(jié)構(gòu)化數(shù)據(jù),并根據(jù)含義和關(guān)聯(lián)進(jìn)行檢索。

Q3Weaviate中的混合搜索是什么?

答:Weaviate中的混合搜索結(jié)合了向量搜索和基于關(guān)鍵字的傳統(tǒng)搜索的概念,為更多樣化的用例提供相關(guān)和上下文相關(guān)的結(jié)果。

原文標(biāo)題:Building a Semantic Search Engine using Weaviate,作者:Janvi Kumari

責(zé)任編輯:姜華 來(lái)源: 51CTO
相關(guān)推薦

2023-01-03 15:42:29

機(jī)器學(xué)習(xí)視頻搜索

2016-08-18 00:54:59

Python圖片處理搜索引擎

2017-08-21 11:14:36

2011-06-20 18:23:06

SEO

2023-02-08 10:45:23

2009-07-30 10:40:56

搜索引擎優(yōu)化網(wǎng)站

2020-02-24 08:52:08

開(kāi)源索引YaCy

2012-08-15 10:02:50

搜索引擎

2017-08-07 08:15:31

搜索引擎倒排

2020-03-20 10:14:49

搜索引擎倒排索引

2015-08-31 10:41:58

搜索引擎Google云應(yīng)用

2022-03-31 20:15:21

圖像搜索引擎

2018-04-16 13:32:19

谷歌搜索引擎Talk to Boo

2018-07-05 22:38:23

大數(shù)據(jù)搜索引擎SEO

2012-09-07 13:22:21

搜索搜狗

2022-10-08 09:13:18

搜索引擎?站

2010-04-20 11:43:46

2009-02-19 09:41:36

搜索引擎搜狐百度

2009-09-22 16:23:52

搜索引擎

2022-10-11 09:27:45

搜索引擎es索引
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 丰县| 滦南县| 合江县| 阿图什市| 建水县| 广汉市| 靖宇县| 西乌| 昌吉市| 新宾| 谷城县| 高台县| 五家渠市| 二手房| 长寿区| 泊头市| 黑水县| 迁安市| 阿图什市| 班玛县| 巴楚县| 双流县| 府谷县| 阜南县| 青阳县| 延津县| 兴宁市| 南皮县| 金寨县| 苏尼特左旗| 自治县| 德昌县| 涞源县| 阿坝| 纳雍县| 镇沅| 砚山县| 毕节市| 湖口县| 疏附县| 临漳县|