Now let’s make this super clear with visuals and explanation, because this is a key concept in understanding FAISS and vector databases.
✅ Yes —
When you create and save a FAISS index to disk (using .save_local() or similar),
it gets stored as a binary file named
index.faiss
When you use FAISS (either directly or through LangChain / custom classes like FaissManager),
you typically create a vector index from document embeddings like this:
from langchain.vectorstores import FAISS
faiss_index = FAISS.from_texts(texts, embedding=embedding_function)
faiss_index.save_local("faiss_index")
The save_local("faiss_index") method will create a folder named faiss_index
and store two files inside it:
| File | Description |
|---|---|
| 🧠 index.faiss | The main FAISS binary file — stores all the numeric embeddings (vectors) |
| 📄 index.pkl | The metadata file — stores document text, IDs, and metadata mapping |
faiss_index/
├── index.faiss ← binary file containing your vector embeddings
├── index.pkl ← Python pickle file storing metadata
└── ingested_meta.json (optional) ← custom JSON file storing extra info
When your custom function like _exists() checks this:
return (self.index_dir / "index.faiss").exists() and (self.index_dir / "index.pkl").exists()
It’s simply verifying:
“Hey, do I already have a complete FAISS index saved here?”
If both files exist, it means:
The FAISS vector index has already been created.
You can load it directly instead of recreating it from scratch.
The base name "index" is not automatic — it’s just a common convention used in FAISS-related code.
You can name it anything you want if you control the saving logic.
Example:
faiss_index.save_local("my_vectors")
will create:
my_vectors/
├── index.faiss
└── index.pkl
Here, even though the folder is named my_vectors,
the files inside are still named index.faiss and index.pkl.
Why?
Because LangChain’s FAISS wrapper internally uses these default filenames.
| Item | Type | Description | Created Automatically? |
|---|---|---|---|
index.faiss |
Binary file | Stores actual vector embeddings | ✅ Yes |
index.pkl |
Pickle file | Stores metadata, doc IDs, mappings | ✅ Yes |
ingested_meta.json |
JSON file | Custom file to track ingested docs | ❌ Optional, developer-defined |
When create and save a FAISS index to disk,
it creates a file named index.faiss (along with index.pkl) inside your index_dir.