大模型联网查询,以及milvus向量数据库的使用

 首先先不要回答,根据用户的提问先进行联网搜索

# 根据用户输入的问题,调用SerperAPI执行联网检索,返回search_top_k个相关的链接
        search_results = await search(query, search_top_k)
async def search(query, num, locale=''):
    """
    定义一个异步函数,用于发起Serper API的实时 Google Search
    """
    # 初始化参数字典,包含搜索查询词和返回结果的数量
    params = {
        "q": query,  # 搜索查询词
        "num": num,  # 请求返回的结果数量
        "hl": "zh-cn"
    }

    # 如果提供了地区设置,则添加到参数字典中
    if locale:
        params["hl"] = locale  # 'hl'参数用于指定搜索结果的语言环境

    try:
        # 使用异步方式调用get_search_results函数,传入参数字典
        # 确保get_search_results是异步函数
        search_results = await get_search_results(params=params)
        return search_results  # 返回搜索结果
    except Exception as e:

        # 如果搜索过程中出现异常,打印错误信息并重新抛出异常
        print(f"search failed: {e}")
        raise e

async def get_search_results(params):
    try:
        # Serper API 的 URL
        url = URL
        # 从环境变量中获取 API 密钥
        params['api_key'] = SERPER_API_KEY

        # 使用 aiohttp 创建一个异步 HTTP 客户端会话
        async with aiohttp.ClientSession() as session:
            # 发送 GET 请求到 Serper API,并等待响应
            async with session.get(url, params=params) as response:
                # 解析 JSON 响应数据
                data = await response.json()
                # 提取有效的搜索结果
                items = data.get("organic", [])
                results = []
                for item in items:
                    # 为每个搜索结果生成 UUID(MD5 哈希)
                    item["uuid"] = hashlib.md5(item["link"].encode()).hexdigest()
                    # 初始化搜索结果的得分
                    item["score"] = 0.00
                    results.append(item)

        return results
    except Exception as e:
        # 记录错误信息
        print("get search results failed:", e)
        raise e

aiohttp.ClientSession()aiohttp 库中的一个异步 HTTP 客户端会话对象,用于执行 HTTP 请求(如 GETPOSTPUT 等)。它提供了异步(

你可能感兴趣的:(langchain,python,RAG)