警告
語意核心向量存放區功能處於預覽狀態,且需要重大變更的改善可能仍會在發行前有限的情況下發生。
目前不支援
概述
Faiss Vector Store 連接器是 Semantic Kernel 提供的向量存放區實作,該實作不會使用外部資料庫,並將數據儲存在 Faiss 索引中的記憶體和向量中。 它會針對記錄的其他部分使用 InMemoryVectorCollection
,同時使用 Faiss 索引進行搜尋。
此向量存放區適用於開發原型的情境,或需要在記憶體內部進行高速操作的情況。
連接器具有下列特性。
功能範圍 | 支援 |
---|---|
集合映射到 | 內存和 Faiss 索引字典 |
支援的鍵屬性類型 | 任何允許作為字典鍵的東西,請參閱 Python 文件以取得詳細資訊,這裡 |
支援的數據類型 | 任何類型 |
支援的向量屬性類型 |
|
支援的索引類型 | 平(請參閱 自定義索引) |
支援的距離函式 |
|
支援記錄中的多個向量 | 是的 |
is_filterable 支援了嗎? | 是的 |
支援全文檢索功能的 is_full_text_searchable? | 是的 |
入門指南
將語意核心套件新增至您的專案。
pip install semantic-kernel[faiss]
在下列代碼段中,假設您已定義名為 『DataModel』 的數據模型類別。
from semantic_kernel.connectors.faiss import FaissStore
vector_store = FaissStore()
vector_collection = vector_store.get_collection("collection_name", DataModel)
可以建構具名集合的直接參考。
from semantic_kernel.connectors.faiss import FaissCollection
vector_collection = FaissCollection(DataModel, collection_name="collection_name")
自定義索引
Faiss 連接器僅限於 Flat 索引類型。
考量 Faiss 索引的複雜性,您可以自由建立自己的索引,包括建置 faiss-gpu 套件,並從中使用索引。 執行此動作時,會忽略向量字段上定義的任何計量。 如果您的資料模型中有多個向量,您可以僅對您希望的向量傳入自定義索引,並讓內建索引自行建立,其中包括平面化索引,而度量則在模型中定義。
請務必注意,如果索引需要定型,則請務必也這樣做,每當我們使用索引時,就會對索引的 is_trained
屬性執行檢查。
集合的 indexes
屬性中一律提供索引(自定義或內建)。 您可以使用這個來取得索引,並對其執行任何您想要的操作,因此您可以在之後進行訓練,只需確保在想要對其進行任何增刪查改操作之前完成這些步驟。
若要傳入您的自訂索引,請使用下列其中一項:
import faiss
from semantic_kernel.connectors.faiss import FaissCollection
index = faiss.IndexHNSW(d=768, M=16, efConstruction=200) # or some other index
vector_collection = FaissCollection(
record_type=DataModel,
collection_name="collection_name",
indexes={"vector_field_name": index}
)
或:
import faiss
from semantic_kernel.connectors.faiss import FaissCollection
index = faiss.IndexHNSW(d=768, M=16, efConstruction=200) # or some other index
vector_collection = FaissCollection(
record_type=DataModel,
collection_name="collection_name",
)
await vector_collection.ensure_collection_exists(
indexes={"vector_field_name": index}
)
# or when you have only one vector field:
await vector_collection.ensure_collection_exists(
index=index
)