将 FAISS 嵌入索引文件(.pkl 和 .faiss)从 Google Cloud Storage Bucket 加载到 Cloud Function

问题描述 投票:0回答:1

我已经从多个文档在本地训练了 FAISS,并使用“.save_local”函数保存了嵌入。嵌入文件(.pkl 和 .faiss)上传到 Google Cloud Storage Bucket。

现在我想使用langchain“FAISS.load_local”函数加载嵌入。但是,我没有找到任何解决方案来使索引文件可以通过“FAISS.load_local”函数访问。

我尝试将 blob 与 download_as_string 和 download_to_file 函数一起使用,并使它们在 RAM 路径中可用:“/tmp”。我已经检查了目录,它们以每种格式保存(.pkl 和 .faiss)。它们都无法通过 load 函数访问,错误附在下面,似乎文件已损坏,并且无法在 load_local 函数中搜索,尤其是 tiktoken。

错误

File "/layers/google.python.pip/pip/lib/python3.11/site-packages/tiktoken/core.py", line 116, in encode
    if match := _special_token_regex(disallowed_special).search(text):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: expected string or buffer"

blob 代码

storage_client = storage.Client()
bucket = storage_client.get_bucket(BUCKET)

EMBEDDINGS_PATH = '/tmp'
filepath = "embeddings"
filename = "index.faiss" or "index.pkl"

#I create a function to iterate the filename, and this is part of the function's code
blob_file = bucket.blob(blob_name="{}/{}".format(filepath,filename)) 
save_file = "{}/{}".format(EMBEDDINGS_PATH, filename)
downloaded_file = blob_file.download_as_string()
with open(save_file, "wb") as f:
      f.write(downloaded_file)

#load the embeddings file
embeddings = OpenAIEmbeddings(openai_api_key=os.environ["OPENAI_API_KEY"])
vectorstore=FAISS.load_local(folder_path="EMBEDDINGS_PATH", embeddings=embeddings, allow_dangerous_deserialization=True)

希望任何人都可以分享从 Google Cloud Storage Bucket 访问和加载 faiss 嵌入到 Cloud Function 的正确方法。谢谢你

google-cloud-functions google-cloud-storage blob langchain faiss
1个回答
0
投票

我遇到了类似的错误 这是我的问题链接:https://stackoverflow.com/staging-ground/79055287 您找到任何解决方案了吗?你能帮我解决这个问题吗?

© www.soinside.com 2019 - 2024. All rights reserved.