我已经从多个文档在本地训练了 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 的正确方法。谢谢你
我遇到了类似的错误 这是我的问题链接:https://stackoverflow.com/staging-ground/79055287 您找到任何解决方案了吗?你能帮我解决这个问题吗?