这将帮助您开始使用 Egnyte 检索器。有关所有功能的详细文档 EgnyteRetriever 和配置,请前往 API 参考文档.
概述
这个 EgnyteRetriever 类可帮助您使用结合语义搜索和关键词搜索的混合搜索功能从 Egnyte 搜索和检索文档。此检索器完全符合 LangChain 标准,支持同步和异步操作。
集成详情
自带数据(即索引和搜索自定义文档语料库):
| 检索器 | 自行托管 | 云服务 | 包 |
|---|---|---|---|
| EgnyteRetriever | ❌ | ✅ | egnyte-langchain-connector |
设置
要使用 Egnyte 包,您需要:
- * 一个 Egnyte 账户 — 如果您不是当前的 Egnyte 客户或想在生产环境之外的 Egnyte 实例中进行测试,您可以使用 免费开发者账户.
- * 一个 Egnyte 应用 — 这在 开发者控制台中配置,必须启用适当的权限范围。
- * 该应用必须由管理员启用。对于免费开发者账户,这将是注册该账户的人。
凭证
在这些示例中,我们将使用 Bearer 令牌认证和 Egnyte 用户令牌。要生成用户令牌:
- 在以下地址注册开发者账户 https://developers.egnyte.com/member/register
- 按照 公共 API 身份验证指南
- **重要**:生成令牌时使用
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 开发者社区。