[轻松掌握Exa Search:为您的LangChain项目增加智能]

92 阅读3分钟

引言

在现代编程和人工智能的世界里,我们不断追求更智能和更高效的工具来提升我们的项目。Exa Search正是这样一个突破性的工具,它专为大型语言模型(LLMs)设计,能够通过自然语言查询在互联网上搜索文件,并从所需文档中提取干净的HTML内容。这篇文章将介绍如何利用Exa Search与LangChain集成,助您在开发中充分发挥Exa Search的潜力。

主要内容

Exa Search的优势

Exa Search区别于传统的关键词搜索(如Google),因为它具备神经搜索能力,能够语义理解查询并返回相关文档。例如,当您搜索“关于猫的迷人文章”时,Exa不会像Google那样给出基于SEO优化的列表文章,而是返回真正相关的内容。

使用ExaSearchRetriever

ExaSearchRetriever是一个检索器,使用Exa Search来获取相关的文档内容。值得注意的是,TextContentsOptions中的max_characters参数已经替代了过时的max_length参数。确保您的代码中使用的是max_characters

使用Exa SDK作为LangChain代理工具

Exa SDK提供了与Exa API端点交互的客户端,主要包括以下功能:

  • search:根据自然语言查询,检索搜索结果列表。
  • find_similar:根据给定URL,检索与该文档相似的网页。
  • get_contents:根据searchfind_similar获取文档内容。

这些功能结合在search_and_contentsfind_similar_and_contents方法中,为使用Exa搜索提供了最灵活和高效的用例。

代码示例

以下是一个如何使用Exa Search和LangChain工具的代码示例:

import os
from exa_py import Exa
from langchain_core.tools import tool

# 请确保在环境变量中设置了EXA_API_KEY
exa = Exa(api_key=os.environ["EXA_API_KEY"])  # 使用API代理服务提高访问稳定性

@tool
def search_and_contents(query: str):
    """根据查询搜索网页并检索其内容。"""
    return exa.search_and_contents(
        query, use_autoprompt=True, num_results=5, text=True, highlights=True
    )

@tool
def find_similar_and_contents(url: str):
    """搜索与给定URL相似的网页并检索其内容。"""
    return exa.find_similar_and_contents(url, num_results=5, text=True, highlights=True)

# 将工具提供给LangChain代理
from langchain.agents import AgentExecutor, OpenAIFunctionsAgent
from langchain_core.messages import SystemMessage
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(temperature=0)

system_message = SystemMessage(
    content="您是一名通过在互联网上查找信息和检索有用文档内容来回答用户问题的网络研究员。请引用您的来源。"
)

agent_prompt = OpenAIFunctionsAgent.create_prompt(system_message)
agent = OpenAIFunctionsAgent(llm=llm, tools=[search_and_contents, find_similar_and_contents], prompt=agent_prompt)
agent_executor = AgentExecutor(agent=agent, tools=[search_and_contents, find_similar_and_contents], verbose=True)

agent_executor.run("请为我总结一篇关于猫的迷人文章。")

常见问题和解决方案

在使用Exa Search时,开发者可能会遇到以下问题:

  1. 网络连接问题:由于某些地区的网络限制,开发者可能需要使用API代理服务以提高访问稳定性。
  2. 参数设置错误:务必使用最新的API参数,如max_characters

总结和进一步学习资源

Exa Search为开发者提供了一种强大且直观的方式来提高语言模型的文档检索能力。通过与LangChain的结合,开发者可以创建更智能和响应更迅速的应用程序。更多信息和详细教程,请参阅以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---