偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

譯者 | 李睿

審校 | 重樓

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

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

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

Weaviate是什么?

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

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

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

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

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

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

Weaviate快速入門:實踐指南

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

前提條件

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

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有兩種方法:

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

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

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

選項2:使用Docker Compose在本地運行

創(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模塊和匿名訪問。

使用以下命令啟動它:

docker-compose up -d

這將以分離模式啟動Weaviate服務(wù)器(在后臺運行)。

步驟2:安裝Python依賴項

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

pip install weaviate-client openai

這將安裝Weaviate Python客戶機和OpenAI庫。

步驟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>"

對于本地部署,不需要WEAVIATE_API_KEY(無需驗證)。

步驟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云實例,并確認服務(wù)器已經(jīng)啟動并可訪問。

對于本地實例,使用:

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

這將連接到本地Weaviate實例。

步驟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"}
 }
 ]
}

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

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

輸出:

上述語句將模式上傳到Weaviate并確認成功。

步驟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)建一個小型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")

輸出:

確認已經(jīng)索引的項目數(shù)量。

步驟7:使用nearText進行語義搜索

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

使用文本向量對“largest elephant”等概念進行語義搜索。僅返回確定性≥0.7且最多2個結(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})")

輸出:

顯示具有確定性分數(shù)的結(jié)果。

步驟8:檢索-增強生成(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()
)

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

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

輸出:

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

Weaviate的主要特性

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

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

Weaviate vs 競爭對手

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

特性

Weaviate

Pinecone

Milvus

Qdrant

開源

混合搜索

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

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

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

分布式架構(gòu)

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

云原生集成

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

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

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

結(jié)論

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

常見問題

Q1Weaviate是什么?

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

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

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

Q3Weaviate中的混合搜索是什么?

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

原文標題:Building a Semantic Search Engine using Weaviate,作者:Janvi Kumari

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

2023-01-03 15:42:29

機器學(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

開源索引YaCy

2012-08-15 10:02:50

搜索引擎

2017-08-07 08:15:31

搜索引擎倒排

2015-08-31 10:41:58

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

2020-03-20 10:14:49

搜索引擎倒排索引

2022-03-31 20:15:21

圖像搜索引擎

2018-04-16 13:32:19

谷歌搜索引擎Talk to Boo

2012-09-07 13:22:21

搜索搜狗

2022-10-08 09:13:18

搜索引擎?站

2018-07-05 22:38:23

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

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索引
點贊
收藏

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