Perform semantic search with SimilarityIndex
mainTo perform semantic search, follow these steps:
- Import
SimilaritySearchKit. - Initialize a
SimilarityIndexwith an embedding model (conforming toEmbeddingProtocol) and a distance metric (conforming toDistanceMetricProtocol). - Use
addItem(id:text:metadata:)to index your content. - Use
search(_:)to query the index. It returns an array ofSearchResultobjects containing the itemid, a similarityscore, and the originalmetadata.
import SimilaritySearchKit
// 1. Initialize
let similarityIndex = await SimilarityIndex(
model: NativeEmbeddings(),
metric: CosineSimilarity()
)
// 2. Add items
await similarityIndex.addItem(
id: "id1",
text: "Metal was released in June 2014.",
metadata: ["source": "example.pdf"]
)
// 3. Search
let results = await similarityIndex.search("When was metal released?")
print(results)
// Output: [SearchResult(id: "id1", score: 0.86216, metadata: ["source": "example.pdf"])]