以编程方式使用文档

这将帮助您开始使用 Egnyte 检索器。有关所有功能的详细文档 EgnyteRetriever 和配置,请前往 API 参考文档.

概述

这个 EgnyteRetriever 类可帮助您使用结合语义搜索和关键词搜索的混合搜索功能从 Egnyte 搜索和检索文档。此检索器完全符合 LangChain 标准,支持同步和异步操作。

集成详情

自带数据(即索引和搜索自定义文档语料库):

检索器自行托管云服务
EgnyteRetrieveregnyte-langchain-connector

设置

要使用 Egnyte 包,您需要:

  • * 一个 Egnyte 账户 — 如果您不是当前的 Egnyte 客户或想在生产环境之外的 Egnyte 实例中进行测试,您可以使用 免费开发者账户.
  • * 一个 Egnyte 应用 — 这在 开发者控制台中配置,必须启用适当的权限范围。
  • * 该应用必须由管理员启用。对于免费开发者账户,这将是注册该账户的人。

凭证

在这些示例中,我们将使用 Bearer 令牌认证和 Egnyte 用户令牌。要生成用户令牌:

  1. 在以下地址注册开发者账户 https://developers.egnyte.com/member/register
  2. 按照 公共 API 身份验证指南
  3. **重要**:生成令牌时使用 Egnyte.ai 权限范围
egnyte_user_token = getpass.getpass("Enter your Egnyte User Token: ")
domain = input("Enter your Egnyte domain (e.g., company.egnyte.com): ")

如果您想从单个查询获取自动化跟踪,还可以设置您的 LangSmith API 密钥(取消下面的注释即可):

os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
os.environ["LANGSMITH_TRACING"] = "true"

安装

此检索器位于 egnyte-langchain-connector package:

pip install -qU egnyte-langchain-connector
Note: you may need to restart the kernel to use updated packages.

实例化

现在我们可以实例化我们的检索器:

from langchain_egnyte import EgnyteRetriever

retriever = EgnyteRetriever(domain=domain, k=100)

用法

基本搜索

query = "machine learning policies"

documents = retriever.invoke(query, egnyte_user_token=egnyte_user_token)

for doc in documents:
    print(f"Title: {doc.metadata.get('title', 'N/A')}")
    print(f"Content: {doc.page_content[:200]}...")
    print("---")

带选项的高级搜索

要进行更精细的搜索,您可以使用 EgnyteSearchOptions 按文件夹路径、日期范围等过滤结果:

from langchain_egnyte import EgnyteRetriever, EgnyteSearchOptions

search_options = EgnyteSearchOptions(
    limit=50,
    folderPath="/policies",
    excludeFolderPaths=["/temp", "/archive"],
    createdAfter=1640995200000,  # Unix timestamp in milliseconds (Jan 1, 2022)
    createdBefore=1672531200000  # Unix timestamp in milliseconds (Jan 1, 2023)
)

retriever = EgnyteRetriever(
    domain=domain,
    k=50,
    search_options=search_options
)

documents = retriever.invoke(
    "compliance requirements",
    egnyte_user_token=egnyte_user_token
)

异步用法

检索器支持异步操作:

async def search_async():
    documents = await retriever.ainvoke(
        "data privacy guidelines",
        egnyte_user_token=egnyte_user_token
    )
    return documents

# Run async search
documents = asyncio.run(search_async())

批量操作

您可以批量处理多个查询:

queries = [
    "security policies",
    "employee handbook",
    "compliance guidelines"
]

# Synchronous batch
results = retriever.batch(
    queries,
    config={"configurable": {"egnyte_user_token": egnyte_user_token}}
)

# Asynchronous batch
results = await retriever.abatch(
    queries,
    config={"configurable": {"egnyte_user_token": egnyte_user_token}}
)

用作代理工具

与其他检索器一样,EgnyteRetriever 可以作为工具添加到 LangGraph 代理中。

from langchain import hub
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain.tools.retriever import create_retriever_tool
from langchain_openai import ChatOpenAI

retriever = EgnyteRetriever(domain=domain, k=50)

egnyte_search_tool = create_retriever_tool(
    retriever,
    "egnyte_search_tool",
    "This tool searches Egnyte and retrieves documents that match the search criteria using hybrid search"
)

tools = [egnyte_search_tool]

prompt = hub.pull("hwchase17/openai-tools-agent")
llm = ChatOpenAI(temperature=0)

agent = create_openai_tools_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)

result = agent_executor.invoke({
    "input": "Find all documents related to data privacy policies"
})

print(result['output'])

API 参考文档

有关所有 EgnyteRetriever 功能和配置,请访问 GitHub 仓库.

帮助

如果您有疑问,请查阅 Egnyte 开发者文档 或联系 Egnyte 开发者社区。