给一个向量数据库的案例让我看看,使用python完成
时间: 2024-12-15 20:26:09 浏览: 10
一个简单的向量数据库案例可以使用Python的`Annoy`库配合`scikit-learn`的`TfidfVectorizer`来实现。这里我们假设有个文本数据集,我们要基于内容相似度创建一个搜索功能。
首先,安装必要的库:
```bash
pip install annoy scikit-learn
```
然后,以下是使用示例代码:
```python
from sklearn.feature_extraction.text import TfidfVectorizer
import annopy
# 假设我们有一个文本列表
documents = [
"苹果是一种水果",
"香蕉也是水果",
"橙子是柑橘类水果",
# 更多文档...
]
# 创建TF-IDF向量表示
vectorizer = TfidfVectorizer()
vectors = vectorizer.fit_transform(documents)
# 将向量存入Annoy索引
annoy_index = annopy.AnnoyIndex(vectors.shape[1], 'angular') # 参数选择适合的相似度度量
for i, vec in enumerate(vectors):
annoy_index.add_item(i, vec)
annoy_index.build(10) # 建立索引,n_trees影响效率
def search_similar(document, n_results=5):
query_vec = vectorizer.transform([document])
distances, indices = annoy_index.get_nns_by_vector(query_vec.toarray(), n_results)
for idx, distance in zip(indices, distances):
print(f"相似度最高的文档 {idx}: {documents[idx]}, 相似度: {distance}")
# 测试搜索
search_similar("我想了解关于柑橘类水果的信息")
```
在这个例子中,当你输入新的查询句子,程序会找到与其最相似的前几个文档。注意,实际应用中你可能需要处理更复杂的数据源,并调整参数以获得更好的效果。
阅读全文