macos Darwin安装faiss-cpu

文章目录

macos 使用brew instll fass, 后python3.12执行引用faiss包功能出现的问题

安装时遇到问题如下

复制代码
ModuleNotFoundError                       Traceback (most recent call last)
File ~/Src/ai/framework/langchain/.venv/lib/python3.12/site-packages/langchain_community/vectorstores/faiss.py:55, in dependable_faiss_import(no_avx2)
     54     else:
---> 55         import faiss
     56 except ImportError:

ModuleNotFoundError: No module named 'faiss'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
Cell In[1], line 19
     14 texts = text_splitter.create_documents(
     15     [page.page_content for page in pages[:4]]
     16 )
     18 embeddings = OpenAIEmbeddings(model="text-embedding-ada-002")
---> 19 db = FAISS.from_documents(texts, embeddings)
     21 retriever = db.as_retriever(search_kwargs={"k": 5})
     23 docs = retriever.invoke(query="llama2有多少参数?")

File ~/Src/ai/framework/langchain/.venv/lib/python3.12/site-packages/langchain_core/vectorstores.py:635, in VectorStore.from_documents(cls, documents, embedding, **kwargs)
    633 texts = [d.page_content for d in documents]
    634 metadatas = [d.metadata for d in documents]
--> 635 return cls.from_texts(texts, embedding, metadatas=metadatas, **kwargs)

File ~/Src/ai/framework/langchain/.venv/lib/python3.12/site-packages/langchain_community/vectorstores/faiss.py:931, in FAISS.from_texts(cls, texts, embedding, metadatas, ids, **kwargs)
    912 """Construct FAISS wrapper from raw documents.
    913 
    914 This is a user friendly interface that:
   (...)
    928         faiss = FAISS.from_texts(texts, embeddings)
    929 """
    930 embeddings = embedding.embed_documents(texts)
--> 931 return cls.__from(
    932     texts,
    933     embeddings,
    934     embedding,
    935     metadatas=metadatas,
    936     ids=ids,
    937     **kwargs,
    938 )

File ~/Src/ai/framework/langchain/.venv/lib/python3.12/site-packages/langchain_community/vectorstores/faiss.py:883, in FAISS.__from(cls, texts, embeddings, embedding, metadatas, ids, normalize_L2, distance_strategy, **kwargs)
    871 @classmethod
    872 def __from(
    873     cls,
   (...)
    881     **kwargs: Any,
    882 ) -> FAISS:
--> 883     faiss = dependable_faiss_import()
    884     if distance_strategy == DistanceStrategy.MAX_INNER_PRODUCT:
    885         index = faiss.IndexFlatIP(len(embeddings[0]))

File ~/Src/ai/framework/langchain/.venv/lib/python3.12/site-packages/langchain_community/vectorstores/faiss.py:57, in dependable_faiss_import(no_avx2)
     55         import faiss
     56 except ImportError:
---> 57     raise ImportError(
     58         "Could not import faiss python package. "
     59         "Please install it with `pip install faiss-gpu` (for CUDA supported GPU) "
     60         "or `pip install faiss-cpu` (depending on Python version)."
     61     )
     62 return faiss

ImportError: Could not import faiss python package. Please install it with `pip install faiss-gpu` (for CUDA supported GPU) or `pip install faiss-cpu` (depending on Python version).

直接使用本地 pip安装fass-cpu会遇到如下问题

复制代码
venwei@svenweis-MacBook-Pro langchain$ pip3 install faiss-cpu 
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
    xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a Python library that isn't in Homebrew,
    use a virtual environment:
    
    python3 -m venv path/to/venv
    source path/to/venv/bin/activate
    python3 -m pip install xyz
    
    If you wish to install a Python application that isn't in Homebrew,
    it may be easiest to use 'pipx install xyz', which will manage a
    virtual environment for you. You can install pipx with
    
    brew install pipx
    
    You may restore the old behavior of pip by passing
    the '--break-system-packages' flag to pip, or by adding
    'break-system-packages = true' to your pip.conf file. The latter
    will permanently disable this error.
    
    If you disable this error, we STRONGLY recommend that you additionally
    pass the '--user' flag to pip, or set 'user = true' in your pip.conf
    file. Failure to do this can result in a broken Homebrew installation.
    
    Read more about this behavior here: <https://peps.python.org/pep-0668/>
    ```
    大概意思是让尝试使用brew来安装, 安装完,再使用python来执行文件就出现文章头的错误. 提示内容也说如果非要使用pip安装就使用python虚拟环境. 目前使用python版本为python3.12, 于是就创建了虚拟环境,并且再次使用pip install faiss-cpu, 又遇到如下列表问题,
* 缺少其它安装包
* swig 执行时出现不同的错误
* ...
中间考虑过是否为python版本问题,运行看pypi上看下说明,只是大于Requires: Python >=3.8, 这句直接导致我浪费大量时间,中间也切换过python3.11遇到是swig执行时遇到问题.
于是考虑是不是swig版本与faiss的版本有相关的,又尝试不同的swig版本,结果仍出问题.
最后想编译faiss,在打算着手做时,才发现python的版本要求是3.8~3.10..WTF
下载并使用python3.10安装faiss-cpu,没用几分钟成功安装
相关推荐
青州从事52115 小时前
20260108【mac】【brew】【docker】安装
macos·docker·eureka
centor21 小时前
国际版 UnitySetup-Android-Support 安装 Mac 设备
android·macos
旭日跑马踏云飞21 小时前
【Mac】实用技巧-在新窗口中打开当前文件夹
macos
林疏safe1 天前
CAD2026最新mac的安装教程收集免费分享
macos
Digitally1 天前
如何高效安全地将 iPhone 与 Mac 同步
安全·macos·iphone
程序员允诺1 天前
办公 WiFi 二次隔离下的远程桌面解决方案实践(Mac → Win11)
macos
hudawei9961 天前
win和Mac在创建python虚拟环境,启动环境等操作的异同
windows·python·macos·虚拟环境
2501_916008891 天前
没有 Mac 如何在 Windows 上创建 iOS 应用描述文件
android·macos·ios·小程序·uni-app·iphone·webview
提笔忘字的帝国1 天前
【教程】macOS 如何完全卸载 Java 开发环境
java·开发语言·macos
数据雕塑家2 天前
【网络故障排查实战】多台机器互ping异常:MAC地址冲突引发的网络“薛定谔猫“现象
网络·macos