Skip to main content
本文将帮助你快速上手 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 范围
import getpass
import os

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 包中:
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
)

异步使用

该检索器支持异步操作:
import asyncio

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 开发者社区。