AI创想

标题: 基于向量数据库的语义检索实战:实习生小渣的AI学习日记 [打印本页]

作者: 创想小编    时间: 3 小时前
标题: 基于向量数据库的语义检索实战:实习生小渣的AI学习日记
作者:CSDN博客
基于向量数据库的语义检索实战:实习生小渣的AI学习日记

小渣和 mentor 的对话

小渣:Mentor,上次我们提到向量化,这次我们来看看如何基于向量数据库实现语义检索吧!
Mentor:好主意!语义检索是大语言模型应用中的重要技术,它通过向量数据库存储和检索文本的向量表示,从而实现高效的语义匹配。今天我们就用Chroma和OpenAI Embedding API来实现一个简单的语义检索系统。
什么是语义检索?

语义检索(Semantic Search)是指通过计算文本的语义相似度来检索相关内容的技术。与传统的关键词匹配不同,语义检索能够理解文本的深层含义,从而返回更相关的结果。
实现步骤

1. 文本向量化

首先,我们需要将文本转换为向量表示。这里使用OpenAI的Embedding API:
  1. import openai
  2. # 设置OpenAI API Key
  3. openai.api_key = "your-api-key"
  4. # 文本向量化
  5. def get_embedding(text):
  6.     response = openai.Embedding.create(
  7.         input=text,
  8.         model="text-embedding-ada-002"
  9.     )
  10.     return response["data"][0]["embedding"]
  11. # 示例文本
  12. text = "如何实现语义检索?"
  13. embedding = get_embedding(text)
  14. print(embedding)
复制代码
2. 存储向量到数据库

接下来,我们将向量存储到Chroma向量数据库中:
  1. import chromadb
  2. # 初始化Chroma客户端
  3. client = chromadb.Client()
  4. # 创建集合(Collection)
  5. collection = client.create_collection(name="semantic_search")
  6. # 添加文档和向量
  7. documents = ["语义检索的实现方法", "向量数据库的应用场景", "大语言模型的技术栈"]
  8. ids = ["doc1", "doc2", "doc3"]
  9. embeddings = [get_embedding(doc) for doc in documents]
  10. collection.add(
  11.     embeddings=embeddings,
  12.     documents=documents,
  13.     ids=ids
  14. )
复制代码
3. 语义检索

现在,我们可以通过查询向量来检索相关内容:
  1. # 查询文本
  2. query = "如何用向量数据库实现搜索?"
  3. query_embedding = get_embedding(query)
  4. # 检索相似文档
  5. results = collection.query(
  6.     query_embeddings=[query_embedding],
  7.     n_results=2
  8. )
  9. print(results["documents"])
复制代码
总结

通过OpenAI Embedding API和Chroma向量数据库,我们实现了一个简单的语义检索系统。虽然功能基础,但它展示了语义检索的核心思想:通过向量化文本和高效检索,实现更智能的搜索体验。下次我们可以进一步优化,比如加入动态更新或更复杂的查询逻辑!

原文地址:https://blog.csdn.net/m0_59004289/article/details/149914506




欢迎光临 AI创想 (http://llms-ai.com/) Powered by Discuz! X3.4