filter
Weaviate
Our great sponsors
filter | Weaviate | |
---|---|---|
18 | 76 | |
783 | 9,181 | |
- | 5.5% | |
0.0 | 10.0 | |
about 1 year ago | 7 days ago | |
Go | Go | |
GNU General Public License v3.0 or later | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
filter
-
Querying and transforming object graphs in Go
Here’s Rob Pike’s (one of the original Go designers) attempt to “see what the hubbub is all about”: https://github.com/robpike/filter
- Future language enhancements to go
-
Why Golang instead of Kotlin?
I find the language really solid but asking on r/golang is quite an adventure. It's extremely distant from go's spirit, the grammar is even more rich than Rust. Typical example: let, run, with, apply, and also - they all practically do the same but with a different scope of this and return value. Just looking at the flow API can get your head spinning. To illustrate how much it's completely the opposite of Go, see how Rob Pike pokes fun at map/filter and tells people they should not use it . I guess you can't force all developers to adhere to this mental model, but that's about it, but that's about it, technical arguments are irrelevant except for extremely niche concerns about memory and startup time
-
Supporting the Use of Rust in the Chromium Project
I mean sure, let's praise the ergonomics of channels and the reliability of maps. As for datastructures, we already have datastructures at home . They just work fine. Nobody needs more than that because rob pike told us so
-
Why isn’t Go used in AI/ML?
Go will never have a map/filter syntax, to the point rob pike even makes fun of it , do you really want to use it for that kind of domain ?
-
State of Rust for web backends
Also since generators are mentioned I recently came across this rob pike moment, he implemented a reduce function that takes and returns all interface{} types and uses reflection to check if the call is valid at runtime - that's the most typical Go that can ever be written in 40 lines - all that to make the point that it's useless. Such a great spirit. https://github.com/robpike/filter
- Go 1.21 may have a clear(x) builtin and there's an interesting reason why
- What necessary packages or functions that Go doesn't have?
-
Golang is so fun to write
A few points that stood out to me: error handling in Go is generally pretty good. It's much more performant compared to throwing exceptions and the high frequency of error handling helps a lot with debugging and avoiding unexpected errors. What you've described as "poor OOP'ish" is partly true, yes Go does poor OOP, because it doesn't try to do OOP. The language favours composition over inheritance. Strongly applying OOP concepts in Go is simply not using the language in its intended way. For implicit interfaces, it's completely fair that you don't like them, but it's not a disadvantage of the language. I for one find implicit interfaces very intuitive and feel it's the right way for it to be done. No function overloading and lack of ternary operations is absolutely intentional, both of these are overcome by writing more expressive code, which is not a bad thing. Similarly with no built in map/filter/find, these can be achieved using for-loops. Reference https://github.com/robpike/filter for Rob Pike's implementation of filter, stating in the readme that there's not much use for it and to just use for-loops instead. Last thing, enums are expressed using iota: https://go.dev/ref/spec#Iota
-
Lies we tell ourselves to keep using Golang
> I didn't get that desire for purity that you gleaned from it.
'Folks who develop an allergic reaction to "big balls of mutable state without sum types" tend to gravitate towards languages that gives them control over mutability, lifetimes, and lets them build abstractions.'
This mutability argument is present throughout the article. Seems like nothing sans Rust or niche functional languages is enough.
> Nil pointer exceptions, for example, don't have to exist anymore..
The language most notorious for those is Java due to almost everything being passed via a nullable reference. When everything can be nullable, how can you know where to check for it? Go addresses this to an extent by explicitly separating pointers from values. Values are the default and cannot be nil, so the opportunity for null dereferences is greatly diminished. It's not a perfect solution, but it's not nothing either.
> and yet they do in Go because they couldn't be bothered to add sum types.
Damn those lazy Go devs!
> Its type system is barely a step above a dynamic language.
Turns out even a basic type system is a huge improvement over none. Just being able to restrict values to concrete types goes a long way.
> You have to write the same imperative looping code over and over because Rob Pike would rather just use a for loop than something mildly expressive like map or filter (https://github.com/robpike/filter).
There are arguments to be made either way, but I definitely agree generics (along with iterators) should have been there since day 1.
> Every function that does meaningful work is littered with if err != nil { return err }.
One big positive of this that I don't see in other languages is every `return` in a function must be on the start of a line. That is, every single exit path of a function is easily findable by visually scanning
Weaviate
-
pgvecto.rs alternatives - qdrant and Weaviate
3 projects | 13 Mar 2024
- FLaNK Stack 29 Jan 2024
- Qdrant, the Vector Search Database, raised $28M in a Series A round
-
How to use Weaviate to store and query vector embeddings
In this tutorial, I introduce Weaviate, an open-source vector database, with the thenlper/gte-base embedding model from Alibaba, through Hugging Face's transformers library.
-
Choosing vector database: a side-by-side comparison
This will be solved in Weaviate https://github.com/weaviate/weaviate/issues/2424
-
Who's hiring developer advocates? (October 2023)
Link to GitHub -->
-
Do we think about vector dbs wrong?
Hey @rvrs, I work on Weaviate and we are doing some improvements around increasing write throughput:
1. gRPC. Using gRPC to write vectors has had a really nice performance boost. It is released in Weaviate core but here is still some work on do on the clients. Feel free to get in contact if you would like to try it out.
2. Parameter tuning. lowering `efConstruction` can speed up imports.
3. We are also working on async indexing https://github.com/weaviate/weaviate/issues/3463 which will further speed things up.
In comparison with pgvector, Weaviate has more flexible query options such as hybrid search and quantization to save memory on larger datasets.
-
Pros and cons of vector search in elastic?
Highly opinionated as I'm working for Weaviate, so take my comment with a large portion of salt.
My highly opinionated view is that for Elastic, they're not really open source and the dependency on Java of the Lucene ecosystem is a big disadvantage, so as you already said, speed, they're getting better at this, but if you need to scale, this problem scales with you.
So if you already have ELK stack and don't need to scale, sure go for it otherwise, Weaviate offers real open source, so use it for free on your own infrastructure https://github.com/weaviate/weaviate
-
Lost on LangChain: Can someone help with the Question Answer concept?
If you do not wish to store your private data on pinecone you can use open source alternatives like Weaviate where you can spin up your own instance. Other option could be to use Agents. You'll need to find sutaible agent for your database which will allow LLMs to directly query data from your private database.
-
Questions about memory, tree-of-thought, planning
I tried cromadb but had terrible performance and could not pin down the cause (likely a problem on my end). Weaviate was easy to setup and had excellent performance, this is probably what I will use in the future. Next on my list is txtinstruct, to finetune a model with data that does not change and using a vector db for everything else seems promising.
What are some alternatives?
Milvus - A cloud-native vector database, storage for next generation AI applications
faiss - A library for efficient similarity search and clustering of dense vectors.
pgvector - Open-source vector similarity search for Postgres
qdrant - Qdrant - High-performance, massive-scale Vector Database for the next generation of AI. Also available in the cloud https://cloud.qdrant.io/
jina - ☁️ Build multimodal AI applications with cloud-native stack
vald - Vald. A Highly Scalable Distributed Vector Search Engine
ChatterBot - ChatterBot is a machine learning, conversational dialog engine for creating chat bots
marqo - Unified embedding generation and search engine. Also available on cloud - cloud.marqo.ai
go - The Go programming language
annoy - Approximate Nearest Neighbors in C++/Python optimized for memory usage and loading/saving to disk
Elasticsearch - Free and Open, Distributed, RESTful Search Engine
OpenSearch - 🔎 Open source distributed and RESTful search engine.